moving *.def and input_xx.xsf from Doc/ to a dedicated doc-def/ directory

git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@4909 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
kokalj 2008-05-13 13:29:38 +00:00
parent 533d2bd45c
commit bf4d5b5d5c
14 changed files with 6075 additions and 0 deletions

94
doc-def/INPUT_BANDS.def Normal file
View File

@ -0,0 +1,94 @@
input_description -distribution {Quantum Espresso} -package PWscf -program bands.x {
toc {}
intro {
Purpose of bands.x:
Rewrite the bands ordering them using the overlap
of the wave-functions on neighbor k points
and calculate properties of each eigen-function.
Presently it can calculate:
(a) The expectation value of the spin operator on each spinor
wave-function.
(b) The symmetry properties of each wavefunction. With this option
the bands are not ordered according to the overlap.
The input data of this program are read from standard input
or from a file and have the following format:
Structure of the input data:
============================
&INPUTPP
...
/
}
namelist INPUTPP {
var prefix -type CHARACTER {
info {
prefix of files saved by program pw.x
}
}
var outdir -type CHARACTER {
info {
temporary directory where pw.x files resides
}
}
var filband -type CHARACTER {
info {
file "filband" contains the bands
}
}
var spin_component -type INTEGER {
info {
In the lsda case select:
1 = spin-up
2 = spin-down
}
}
dimension lsigma(i) -start 1 -end 3 -type LOGICAL {
info {
If true writes a file filband.i with the expectation
values of the spin operator on the spinor wave-functions.
(only in the noncollinear case).
}
}
var lsym -type LOGICAL {
info {
If .true. the bands are classified according to the
irreducible representations of the small group of k. A
file "filband".rap with the same format of "filband"
is written.
}
}
var no_overlap -type LOGICAL {
default { .false. }
info {
If .true. writes the eigenvalues in the output file
without changing their order.
}
}
vargroup -type INTEGER {
var firstk
var lastk
info {
if lsym=.true. makes the symmetry analysis only for k
points between firstk to lastk
}
}
}
}

207
doc-def/INPUT_CPPP.def Normal file
View File

@ -0,0 +1,207 @@
input_description -distribution {Quantum Espresso} -package CP -program cppp.x {
toc {}
intro {
=============================================================================
CP Post-Processing code (cppp.x)
=============================================================================
The cppp.x code is an utility that can be used to extract data from the CP
restart and CP trajectory files.
INPUT:
=====
the program read the input parameters from the standard input or from
any other file specified through the usual "-input" command line flag.
The input parameters, in the input file, should be specified in the inputpp
namelist follow:
&INPUTPP
...
cppp_input_parameter
...
/
}
namelist INPUTPP {
var prefix -type CHARACTER {
default { 'cp' }
info {
basename prepended to cp.x output filenames: cp.evp, cp.pos ....
}
}
var fileout -type CHARACTER {
default { 'out' }
info {
basename of the cppp.x output files
}
}
var output -type CHARACTER {
default { 'xsf' }
info {
a string describing the output format to be performed,
allowed values: 'xsf', 'grd'
xsf xcrysden format
grd GRD gaussian 3D grid format
}
}
var outdir -type CHARACTER {
default { './' }
info {
directory containing the CP trajectory files (.evp .pos .cel ...)
and restart files ( .save ) to be processed
}
}
var lcharge -type LOGICAL {
default { .false. }
info {
This logical flag control the processing of charge density.
.TRUE. generate output file containing charge density.
The file format is controlled by the "output" parameter
.FALSE. do not generate charge density file
}
}
var lforces -type LOGICAL {
default { .false. }
info {
This logical flag control the processing of forces.
.TRUE. extract forces from trajectory files and write
them to xcrysden file
.FALSE. do not proces forces
}
}
var ldynamics -type LOGICAL {
default { .false. }
info {
This logical flag control the processing of atoms trajeactory.
.TRUE. process CP trajectory files and generata a trajectory
file for xcrysden (.axsf)
.FALSE. do not proces trajectory
}
}
var lpdb -type LOGICAL {
default { .false. }
info {
This logical flag control the generation of a pdb file.
.TRUE. generate a pdb file containing positon and cell of
the simulated system
.FALSE. do not generate pdb file
}
}
var lrotation -type LOGICAL {
default { .false. }
info {
This logical flag control the rotation of the cell
.TRUE. rotate the system cell in space in order to have
the a lattice parameter laying on the x axis,
the b lattice parameter laying on the xy plane
.FALSE. do not rotate cell
}
}
vargroup -type INTEGER {
var ns1
var ns2
var ns3
default { 0 }
info {
Dimensions of the charge density 3D grid.
If ns1, ns2, ns3 are 0 or not specified, the dimensions
of the grid in the CP run are assumed; otherwise chargedensity
is re-sampled on the GRID specified with ns1,ns2,ns3
}
}
vargroup -type INTEGER {
var np1
var np2
var np3
default { 1 }
info {
Number of replicas of atomic positions along cell parameters.
If ns1, ns2, ns3 are 1 or not specified, cppp.x do not
replicate atomi positions in space.
If ns1 ns2 ns3 are > 1 cppp.x replicate the positions along
a ns1 times, along b ns2 times and along c ns3 times.
the atomic positions used in the simunation.
}
}
var nframes -type INTEGER {
default { 1 }
info {
number of MD step to be read to buind the trajectory
}
}
var ndr -type INTEGER {
default { 51 }
info {
CP restart file number to post process
}
}
dimension atomic_number -start 1 -end ntyp -type INTEGER {
default { 1 }
info {
Specify the atomic number of the species in CP trajectory and
restart file.
atomic_number(1) specify the atomic number of the first specie
atomic_number(2) specify the atomic number of the second specie
....
}
}
var charge_density -type CHARACTER {
default { 'full' }
info {
specify the component of the charge density to plot,
allowed values:
'full' print the full electronic charge
'spin' print the spin polarization (for LSD calculations)
}
}
var state -type CHARACTER {
default { ' ' }
info {
specify the Kohn-Sham state to plot, example: 'KS_1'
}
}
var lbinary -type LOGICAL {
default { .TRUE. }
info {
specify the file format of the wave function files
to be read and plotted
}
}
}
}

98
doc-def/INPUT_D3.def Normal file
View File

@ -0,0 +1,98 @@
input_description -distribution {Quantum Espresso} -package PWscf -program d3.x {
toc {}
namelist INPUTPH {
group {
label { Variables that MUST BE SPECIFIED }
var fildrho -type CHARACTER {
info {
The file containing the variation of the charge
density at the q point under consideration, this
file is produced by phonon.
}
default { ' ' }
}
var fild0rho -type CHARACTER {
info {
The file containing the variation of the charge
density at q=0, this file is produced by phonon.
}
default { ' ' }
}
dimension amass -start 1 -end ntyp -type CHARACTER {
info {
ionic masses [atomic mass units]
}
}
}
var prefix -type CHARACTER {
info { prefix for file names }
default { 'pwscf' }
}
var outdir -type CHARACTER {
info { scratch directory }
default { './' }
}
var fildyn -type CHARACTER {
info {
The file where the derivative of the dynamical
matrix will be written
}
default { 'd3dyn' }
}
var ethr_ph -type REAL {
info {
Threshold for iterative diagonalization
(accuracy in ryd of the calculated eigenvalues).
}
default { 1.0d-5 }
}
dimension q0mode_todo -start 1 -end 3*nat -type INTEGER {
info {
This array contains the list of the q=0 modes that
will be computed. If q0mode_todo(1).eq.0 the
program will compute every q=0 mode.
}
status { q0mode_todo is statically allocated to dimension 300 }
default { 0 }
}
var wraux -type LOGICAL {
info {
If .true. the program will write different terms
of the matrix on different files.
}
default { .false. }
}
var recv -type LOGICAL {
info { Specify .true. for a recover run. }
default { .false. }
}
var istop -type INTEGER {
default { 0 }
info {
If this number is set different from zero the
program will stop after the specified routine
and will write the partial result in the recover
file.
}
}
var iverbosity -type INTEGER {
default { 0 }
info { type of printing ( 0 few, 1 all ) }
}
}
}

115
doc-def/INPUT_DOS.def Normal file
View File

@ -0,0 +1,115 @@
input_description -distribution {Quantum Espresso} -package PWscf -program dos.x {
toc {}
intro {
Purpose of dos.x:
calculates the Density of States (DOS)
(separated into up and down components for lSDA)
See the header of file PP/dos.90 for more info.
Structure of the input data:
============================
&INPUTPP
...
/
}
namelist INPUTPP {
var prefix -type CHARACTER {
default { 'pwscf' }
info {
prefix of input file produced by pw.x
(wavefunctions are not needed)
}
}
var outdir -type CHARACTER {
default { './' }
info {
directory containing the input file
}
}
var ngauss -type INTEGER {
default { 0 }
status { optional }
info {
Type of gaussian broadening:
= 0 Simple Gaussian (default)
= 1 Methfessel-Paxton of order 1
= -1 Marzari-Vanderbilt "cold smearing"
=-99 Fermi-Dirac function
}
}
var degauss -type REAL {
info {
gaussian broadening, Ry (not eV!) see below
}
}
vargroup -type REAL {
var Emin
var Emax
default { band extrema }
info {
min, max energy (eV) for DOS plot
}
}
var DeltaE -type REAL {
info {
energy grid step (eV)
}
}
var fildos -type CHARACTER {
default { "prefix".dos }
info {
output file containing DOS(E)
}
}
}
section -title Notes {
subsection -title Output {
text {
The total DOS (states/eV plotted vs E in eV) is written to file "fildos"
}
}
subsection -title {Important !} {
text {
The tetrahedron method is used if
- the input data file has been produced by pw.x using the option
occupations='tetrahedra', AND
- a value for degauss is not given as input to namelist &inputpp
Gaussian broadening is used in all other cases:
- if degauss is set to some value in namelist &inputpp, that value
(and the optional value for ngauss) is used
- if degauss is NOT set to any value in namelist &inputpp, the
value of degauss and of ngauss are read from the input data
file (they will be the same used in the pw.x calculations)
- if degauss is NOT set to any value in namelist &inputpp, AND
there is no value of degauss and of ngauss in the input data
file, degauss=DeltaE (in Ry) and ngauss=0 will be used
}
}
}
}

126
doc-def/INPUT_GIPAW.def Normal file
View File

@ -0,0 +1,126 @@
input_description -distribution {Quantum Espresso} -program gipaw.x {
toc {}
intro {
Structure of the input data:
============================
&INPUTGIPAW
...
/
}
namelist INPUTGIPAW {
var job -type CHARACTER {
default { 'nmr' }
info {
select calculation to perform. The possible values are:
'f-sum' check the f-sum rule
'nmr' compute the magnetic suscept. and NMR chemical shifts
'g_tensor' compute the EPR g-tensor
'efg' compute the electric field gradients at the nuclei
}
}
var prefix -type CHARACTER {
default { 'prefix' }
info {
prefix of files saved by program pw.x
}
}
var tmp_dir -type CHARACTER {
default { './scratch/' }
info {
temporary directory where pw.x files resides
}
}
var conv_threshold -type REAL {
default { 1.d-14 }
info {
convergence threshold for the diagonalization and for the Green's
function solver
}
}
var isolve -type INTEGER {
default { 0 }
info {
diagonalization method:
0 = Davidson
1 = CG
}
}
var q_gipaw -type REAL {
default { 0.01 }
info {
small vector for long wavelength linear response
}
}
var iverbosity -type INTEGER {
default { 0 }
info {
if iverbosity > 0 print more information in output
}
}
var filcurr -type CHARACTER {
default { '' }
info {
for saving the induced current (valence only)
}
}
var filfield -type CHARACTER {
default { '' }
info {
for saving the induced magnetic field (valence only)
}
}
var read_recon_in_paratec_fmt -type LOGICAL {
default { .FALSE. }
info {
for reading reconstruction data from Paratec converted
pseudopotentials
}
}
dimension file_reconstruction -start 1 -end ntyp -type CHARACTER {
info {
for each pseudopotential, the file name with reconstruction data
}
}
var use_nmr_macroscopic_shape -type LOGICAL {
info {
correct the chemical shift by taking into account the macroscopic
shape of the sample
}
}
var nmr_macroscopic_shape(3,3) -type REAL {
default { 2/3 }
info {
tensor for the macroscopic shape correction
}
}
var spline_ps -type LOGICAL {
default { .TRUE. }
info {
interpolate pseudopotentials with cubic splines (better accuracy
of the chemical shifts)
}
}
}
}

892
doc-def/INPUT_LD1.def Normal file
View File

@ -0,0 +1,892 @@
input_description -distribution {Quantum Espresso} -program ld1.x {
toc {}
intro {
Input data cards for ld1.x program:
Always present:
1 namelist &input
1.1 optional cards for all-electron calculations
Needed for PP generation:
2 namelist &inputp
2.1 additional cards for PP generation
Needed for pseudo-potential (PP) test. optional for PP generation:
3 namelist &test
3.1 optional cards for PP test
}
namelist INPUT {
label { This namelist is always needed ! }
var title -type CHARACTER {
info { A string describing the job. }
status { OPTIONAL }
}
group {
label { Either: }
var zed -type REAL {
see { atom }
info {
The nuclear charge (1 < zed < 100).
IMPORTANT:
Specify either zed OR atom, not both!
}
}
label { Or: }
var atom -type CHARACTER {
see { zed }
info {
Atomic symbol: atom='H', 'He', 'Be', etc.
IMPORTANT:
Specify either atom OR zed, not both!
}
}
}
group {
label { Radial grid parameters: }
var xmin -type REAL {
see { dx }
default {
-7.0 if iswitch>1 or rel=0,
-8.0 otherwise
}
info { Radial grid parameter. }
}
var dx -type REAL {
info {
Radial grid parameter.
The radial grid is: r(i+1) = exp(xmin+i*dx)/zed a.u.
}
default {
0.0125 if iswitch>1,
0.008 otherwise
}
}
var rmax -type REAL {
info { Outermost grid point. }
default { 100.0 a.u. }
}
}
var beta -type REAL {
info { parameter for potential mixing }
default { 0.2 }
}
var tr2 -type REAL {
info { convergence threshold for scf }
default { 1e-14 }
}
var iswitch -type INTEGER {
info {
1 all-electron calculation
2 PP test calculation
3 PP generation
}
default { 1 }
}
group {
label { Paramaters for logarithmic derivatives: }
var nld -type INTEGER {
info { the number of logarithmic derivatives to be calculated }
}
var rlderiv -type REAL {
info { radius (a.u.) at which logarithmic derivatives are calculated }
}
vargroup -type REAL {
var eminld
var emaxld
info {
Energy range (min, max energy, in Ry) at which
logarithmic derivatives are calculated.
}
}
var deld -type REAL {
info {
Delta e (Ry) of energy for logarithmic derivatives.
}
}
message {
If the above parameters are not specified, logarithmic
derivatives are not calculated.
}
}
var rel -type INTEGER {
info {
0 ... non relativistic calculation
1 ... scalar relativistic calculation
2 ... full relativistic calculation with spin-orbit
}
default {
0 for Z <= 18;
1 for Z > 18
}
}
var lsmall -type LOGICAL {
default { .false. }
info {
if .true. writes on files the small component
}
}
var lsd -type INTEGER {
info {
0 ... non spin polarized calculation
1 ... spin-polarized calculation
BEWARE:
not allowed if iswitch=3 (PP generation) or with full
relativistic calculation
}
default { 0 }
}
var dft -type CHARACTER {
info {
Exchange-correlation functional.
Examples:
'PZ' Perdew and Zunger formula for LDA
'PW91' Perdew and Wang GGA
'BP' Becke and Perdew GGA
'PBE' Perdew, Becke and Ernzerhof GGA
'BLYP' ...
For the complete list, see module "functionals" in ../flib/
The default is 'PZ' for all-electron calculations,
it is read from the PP file in a PP calculation.
}
}
var latt -type INTEGER {
info {
0 ... no Latter correction
1 ... apply Latter correction
}
default { 0 }
}
var isic -type INTEGER {
info {
0 ... no Self-interaction correction
1 ... apply Self-interaction correction
}
default { 0 }
status {
only for all-electron calculation
}
}
var rytoev_fact -type REAL {
default { as specified in file Modules/constants.f90 }
info {
Factor used to convert Ry into eV.
}
}
var cau_fact -type REAL {
default { as specified in file Modules/constants.f90 }
info {
Speed of light in a.u..
(Be careful the default value is always used in the
relativistic exchange.)
}
}
var vdw -type LOGICAL {
default { .false. }
info {
If .true., the frequency dependent polarizability and van der
Waals coefficient C6 will be computed in Thomas-Fermi and
von Weizsaecker approximation(only for closed-shell ions).
}
status {
Gradient-corrected DFT not yet implemented.
}
}
var prefix -type CHARACTER {
default { 'ld1' }
info {
Prefix for file names - only for output file names
containing the orbitals, logarithmic derivatives, tests
See below for file names and the content of the file.
}
}
var verbosity -type CHARACTER {
default { 'low' }
info {
'low' or 'high'
if 'high' with iswitch=2,3 prints separately core and
valence contributions to the energies. Print the
frozen-core energy.
}
}
var config -type CHARACTER {
default { ' ' }
info {
A string with the electronic configuration.
Example:
'[Ar] 3d10 4s2 4p2.5'
* If lsd=1, spin-up and spin-down state may appear twice
with the respective occupancy: 3p4 3p2 = 4 up,
2 down. Otherwise, the Hund's rule is assumed.
* If rel=2, states with jj=l-1/2 are filled first.
If a state appears twice, the first one has jj=l-1/2,
the second one jj=l+1/2 (except S states)
(Use rel_dist if you want to average the electrons
over all available states.)
Negative occupancies are used to flag unbound states;
they are not actually used.
}
}
var rel_dist -type CHARACTER {
default { 'energy' }
info {
'energy' or 'average'
* if 'energy' the relativistic l-1/2 states are filled first.
* if 'average' the electrons are uniformly distributed
among all the states with the given l.
}
}
var write_coulomb -type LOGICAL {
default { .false. }
info {
If .true., a fake pseuopotential file with name X.UPF,
where X is the atomic symbol, is written. It contains
the radial grid and the wavefunctions as specified in input,
plus the info needed to build the Coulomb potential
for an all-electron calculation - for testing only.
}
}
}
card AllElectronCards -nameless 1 {
label {
If config is empty the electronic configuration is read from
the following cards:
}
choose {
when -test "rel < 2" {
syntax {
line {
var nwf -type INTEGER {
info {
number of wavefunctions
}
}
}
table AE_wfs {
rows -start 1 -end nwf {
col nl -type CHARACTER {
info { wavefunction label (e.g. 1s, 2s, etc.) }
}
col n -type INTEGER { info { principal quantum number } }
col l -type INTEGER { info { angular quantum number } }
col oc -type REAL { info { occupation number } }
col isw -type INTEGER {
info { the spin index (1-2) used only in the lsda case }
}
}
}
}
}
elsewhen -test "rel = 2" {
syntax {
line {
var nwf
}
table AE_wfs {
rows -start 1 -end nwf {
col nl
col n
col l
col oc
col jj -type REAL {
info {
The total angular momentum (0.0 is allowed for complete
shells: the codes fills 2l states with jj=l-1/2,
2l+2 with jj=l+1/2).
}
}
}
}
}
}
}
}
namelist INPUTP {
var zval -type REAL {
default { (calculated) }
info {
Valence charge.
zval is automatically calculated from available data.
If the value of zval is provided in input, it will be
checked versus the calculated value. The only case in
which you need to explicitly provide the value of zval
is for noninteger zval (i.e. half core-hole pseudopotentials).
}
}
var pseudotype -type INTEGER {
info {
1 ... norm-conserving, single-projector PP (old format)
IMPORTANT: if pseudotype=1 all calculations are done using
the SEMILOCAL form, not the separable nonlocal form
2 ... norm-conserving, multiple-projector PP in separable form
3 ... ultrasoft PP
}
}
var file_pseudopw -type CHARACTER {
status { REQUIRED }
info {
File where the generated PP is written.
* if the file name ends with "upf" or "UPF",
or in any case for spin-orbit PP (rel=2),
the file is written in UPF format;
* if the file name ends with 'psp' it is
written in native CPMD format (this is currently
an experimental feature); otherwise it is written
in the old "NC" format if pseudotype=1, or
in the old RRKJ format if pseudotype=2 or 3
(no default, must be specified).
}
}
var file_recon -type CHARACTER {
info {
File containing data needed for PAW reconstruction
of all-electron wavefunctions from PP results.
If you want to use additional states to perform the
reconstruction, add them at the end of the list
of all-electron states.
}
default { ' ' }
}
var lloc -type INTEGER {
default { -1 }
info {
Angular momentum of the local channel.
* lloc=-1 pseudizes the all-electron potential
* lloc>-1 uses the corresponding channel as local PP
NB: if lloc>-1, the corresponding channel must be the last in the
list of wavefunctions appearing after the namelist &inputp
In the relativistic case, if lloc > 0 both the j=lloc-1/2 and
the j=lloc+1/2 wavefunctions must be at the end of the list.
}
}
var rcloc -type REAL {
status {
Must be specified only if lloc=-1, otherwise the
corresponding value of rcut is used.
}
info {
Matching radius (a.u.) for local pseudo-potential (no default).
}
}
var nlcc -type LOGICAL {
default { .false. }
info {
If .true. produce a PP with the nonlinear core
correction of Froyen, Cohen, and Louie.
}
}
var new_core_ps -type LOGICAL {
default { .false. }
status { requires nlcc=.true. }
info {
If .true. pseudizes the core charge with bessel functions.
}
}
var rcore -type REAL {
info {
Matching radius (a.u.) for the smoothing of the core charge.
If not specified, the matching radius is determined
by the condition: rho_core(rcore) = 2*rho_valence(rcore)
}
}
var tm -type LOGICAL {
default { .false. }
info {
* .true. for Troullier-Martins pseudization [PRB 43, 1993 (1991)]
* .false. for Rabe-Rappe-Kaxiras-Joannopoulos pseudization
[PRB 41, 1227 (1990), erratum PRB 44, 13175 (1991)]
}
}
var rho0 -type REAL {
info {
Charge at the origin: when the Rabe-Rappe-Kaxiras-Joannopoulos
method with 3 Bessel functions fails, specifying rho0 > 0
may allow to override the problem (using 4 Bessel functions).
Typical values are in the order of 0.01-0.02
}
default { 0.0 }
}
var lpaw -type LOGICAL {
info {
If .true. produce a PAW dataset, experimental feature
only for pseudotype=3
}
default { .false. }
}
group {
var which_augfun -type CHARACTER {
default {
'AE' for Vanderbilt-Ultrasoft pseudopotentials and 'BESSEL' for PAW datasets.
}
info {
If different from 'AE' the augmentation functions are pseudized
before rmatch_augfun. The pseudization options are:
* 'BESSEL' Use Bessel functions to pseudize the Q.
These features are available only for PAW:
* 'GAUSS' Use 2 Gaussian functions to pseudize the Q.
* 'BG' Use original Bloechl's recipy with a single gaussian.
This feature is available only for US-PP:
* 'PSQ' Use Bessel functions to pseudize Q from the origin
to min(rcut(ns),rcut(ns1)) where ns and ns1 are
the two channels for that Q.
Note: if lpaw is true and which_augfun is set to AE real all-
electron charge will be used, which will produce extremly
hard augmentation.
}
}
var rmatch_augfun -type REAL {
default { 0.5 a.u. }
status { Used only if which_augfun is different from 'AE'. }
info {
Pseudization radius for the augmentation functions. Presently
it has the same value for all L.
}
}
}
var lsave_wfc -type LOGICAL {
default { .false. if .not. lpaw, otherwise .true. }
info {
Set it to .true. to save all-electron and pseudo wavefunctions
used in the pseudopotential generation in the UPF file. Only
works for UPFv2 format.
}
}
var author -type CHARACTER {
info { Name of the author. }
default { 'anonymous' }
}
var file_chi -type CHARACTER {
info { file containing output PP chi functions }
default { ' ' }
}
var file_beta -type CHARACTER {
info { file containing output PP beta functions }
default { ' ' }
}
var file_qvan -type CHARACTER {
info { file containing output PP qvan functions }
default { ' ' }
}
var file_screen -type CHARACTER {
info { file containing output screening potential }
default { ' ' }
}
var file_core -type CHARACTER {
info { file containing output total and core charge }
default { ' ' }
}
var file_wfcaegen -type CHARACTER {
info { file with the all-electron wfc for generation }
default { ' ' }
}
var file_wfcncgen -type CHARACTER {
info { file with the norm-conserving wfc for generation }
default { ' ' }
}
var file_wfcusgen -type CHARACTER {
info { file with the ultra-soft wfc for generation }
default { ' ' }
}
}
card PseudoPotentialGenerationCards -nameless 1 {
choose {
when -test "rel=0 OR rel=2" {
syntax {
line {
var nwfs -type INTEGER {
info { number of wavefunctions to be pseudized }
}
}
table PP_wfs {
rows -start 1 -end nwfs {
col nls -type CHARACTER {
info {
Wavefunction label (same as in the all-electron configuration).
}
}
col nns -type INTEGER {
info {
Principal quantum number (referred to the PSEUDOPOTENTIAL case;
nns=1 for lowest s, nns=2 for lowest p, and so on).
}
}
col lls -type INTEGER { info { Angular momentum quantum number. } }
col ocs -type REAL { info { Occupation number (same as in the all-electron configuration). } }
col ener -type REAL {
info {
Energy (Ry) used to pseudize the corresponding state.
If 0.d0, use the one-electron energy of the all-electron state.
Do not use 0.d0 for unbound states!
}
}
col rcut -type REAL { info { Matching radius (a.u.) for norm conserving PP. } }
col rcutus -type REAL {
info { Matching radius (a.u.) for ultrasoft PP - only for pseudotype=3. }
}
col jjs -type REAL { info { The total angular momentum (0.0 is allowed for complete shells). } }
}
}
}
message {
* if lloc>-1 the state with lls=lloc must be the last
* if lloc>0 in the relativistic case, both states with jjs=lloc-1/2
and jjs=lloc+1/2 must be the last two
}
}
otherwise {
syntax {
line {
var nwfs
}
table PP_wfs {
rows -start 1 -end nwfs {
col nls
col nns
col lls
col ocs
col ener
col rcut
col rcutus
}
}
}
}
}
}
namelist TEST {
label { needed only if iswitch=2, optional if iswitch=3 }
var nconf -type INTEGER {
info { the number of configurations to be tested }
default { 1 }
}
var file_pseudo -type CHARACTER {
status { ignored if iswitch=3 }
info {
File containing the PP.
* If the file name contains ".upf" or ".UPF",
the file is assumed to be in UPF format;
* else if the file name contains ".rrkj3" or ".RRKJ3",
the old RRKJ format is first tried;
* otherwise, the old NC format is read.
IMPORTANT: in the latter case, all calculations are done
using the SEMILOCAL form, not the separable nonlocal form.
Use the UPF format if you want to test the separable form!
}
default { ' ' }
}
vargroup -type REAL {
var ecutmin
var ecutmax
var decut
info {
Parameters (Ry) used for test with a basis set of spherical
Bessel functions j_l(qr) . The hamiltonian at fixed scf
potential is diagonalized for various values of ecut:
ecutmin, ecutmin+decut, ecutmin+2*decut ... up to ecutmax.
This yields an indication of convergence with the
corresponding plane-wave cutoff in solids, and shows
in an unambiguous way if there are "ghost" states
}
default {
decut=5.0 Ry; ecutmin=ecutmax=0Ry
}
status { specify ecutmin and ecutmax if you want to perform this test }
}
var rm -type REAL {
info { Radius of the box used with spherical Bessel functions. }
default { 30 a.u. }
}
dimension configts -start 1 -end nconf -type CHARACTER {
info {
A string containing the test valence electronic
configuration nc, nc=1,nconf. Same syntax as for "config".
If configts(i) is not set, the electron configuration
is read from the cards following the namelist.
}
}
dimension lsdts -start 1 -end nconf -type INTEGER {
default { 1 }
see { lsd }
info {
0 or 1. It is the value of lsd used in the i-th test.
Allows to make simultaneously spin-polarized and
spin-unpolarized tests.
}
}
var frozen_core -type LOGICAL {
default { .false. }
info {
If .true. only the core wavefunctions of the first
configuration are calculated. The eigenvalues, orbitals
and energies of the other configurations are calculated
with the core of the first configuration.
The first configuration must be spin-unpolarized.
}
}
}
card PseudoPotentialTestCards -nameless 1 {
label { IMPORTANT: this card has to be specified for each missing configts(i) }
choose {
when -test "lsd=1" {
syntax {
line {
var nwfts -type INTEGER { info { number of wavefunctions } }
}
table test_wfs {
rows -start 1 -end nwfts {
col elts -type CRATACTER { see { nls } }
col nnts -type INTEGER { see { nns } }
col llts -type INTEGER { see { lls } }
col octs -type REAL { see { ocs } }
col enerts -type REAL { status { not used } }
col rcutts -type REAL { status { not used } }
col rcutusts -type REAL { status { not used } }
col iswts -type INTEGER { info { spin index (1 or 2, used in lsda case) } }
}
}
}
}
elsewhen -test "rel=2" {
syntax {
line { var nwfts }
table test_wfs {
rows -start 1 -end nwfts {
col elts
col nnts
col llts
col octs
col enerts
col rcutts
col rcutusts
col jjts -type REAL { info { total angular momentum of the state } }
}
}
}
}
otherwise {
syntax {
line { var nwfts }
table test_wfs {
rows -start 1 -end nwfts {
col elts
col nnts
col llts
col octs
col enerts
col rcutts
col rcutusts
}
}
}
}
}
}
section -title {Notes} {
text {
For PP generation you do not need to specify namelist &test, UNLESS:
1. you want to use a different configuration for unscreening wrt the
one used to generate the PP. This is useful for PP with semicore
states: use semicore states ONLY to produce the PP, use semicore
AND valence states (if occupied) to make the unscreening
2. you want to specify some more states for PAW style reconstruction of
all-electron orbitals from pseudo-orbitals
}
subsection -title {Output files written} {
text {
* file_tests "prefix".test results of transferability test
for each testing configuration N:
* file_wavefunctions "prefix"N.wfc all-electron KS orbitals
* file_wavefunctionsps "prefix"Nps.wfc pseudo KS orbitals
if lsd=1:
* file_wavefunctions "prefix"N.wfc.up all-electron KS up orbitals
* file_wavefunctions "prefix"N.wfc.dw all-electron KS down orbitals
if rel=2 and lsmall=.true.:
* file_wavefunctions "prefix".wfc.small all-electron KS small component
if parameters for logarithmic derivatives are specified:
* file_logder "prefix"Nps.dlog all-electron logarithmic derivatives
* file_logderps "prefix"Nps.dlog pseudo logarithmic derivatives
"N" is not present if there is just one testing configuration.
}
}
subsection -title {Recipes to reproduce old all-electron atomic results with the ld1 program} {
text {
* The Herman-Skillman tables can be reproduced with:
rel=0,
isic=0,
latt=1,
dft='SL1-NOC'
* Data on the paper Liberman, Waber, Cromer Phys. Rev. 137, A27 (1965) can be
reproduced with:
rel=2,
isic=0,
latt=1,
dft='SL1-NOC'
* Data on the paper S. Cohen Phys. Rev. 118, 489 (1960) can be reproduced with:
rel=2,
isic=1,
latt=0,
dft='NOX-NOC'
* The revised PBE described in PRL 80, 890 (1998) can be obtained with:
isic=0
latt=0
dft='SLA-PW-RPB-PBC' or 'dft='revPBE'
* The relativistic energies of closed shell atoms reported in PRB 64 235126 (2001)
can be reproduced with:
isic=0
latt=0
cau_fact=137.0359895
dft='sla-vwn' for the LDA case
dft='PBE' for the PBE case
* The NIST results in PRB 55, 191 (1997):
LDA:
rel=0
dft='sla-vwn'
LSD:
rel=0
lsd=1
dft='sla-vwn'
RLDA
rel=2
rel_dist='average'
dft='rxc-vwn'
ScRLDA:
rel=1
dft='rxc-vwn'
}
}
}
}

341
doc-def/INPUT_PH.def Normal file
View File

@ -0,0 +1,341 @@
input_description -distribution {Quantum Espresso} -package PWscf -program ph.x {
toc {}
intro {
Input data format: { } = optional, [ ] = it depends, # = comment
Structure of the input data:
===============================================================================
title_line
&INPUTPH
...
/
xq(1) xq(2) xq(3)
[ irrep(1) irrep(2) ... irrep(nrapp) ] # if "nrapp" was specified
[ atom(1) atom(2) ... atom(nat_todo) ] # if "nat_todo" was specified
}
linecard {
var title_ph -type CHARACTER {
info {
Title of the job, i.e., a line that is reprinted on output.
}
}
}
namelist INPUTPH {
dimension amass -start 1 -end ntyp -type REAL {
default { 0.0 }
info {
Atomic mass [amu] of each atomic type.
If not specified, masses are read from data file
}
}
var outdir -type CHARACTER {
default { './' }
info { Scratch directory. }
}
var prefix -type CHARACTER {
default { 'pwscf' }
info {
Prepended to input/output filenames; must be the same
used in the calculation of unperturbed system.
}
}
var niter_ph -type INTEGER {
default { 50 }
info {
Maximum number of iterations in a scf step.
}
}
var tr2_ph -type REAL {
info { Threshold for selfconsistency. }
default { 1e-10 }
}
var alpha_mix(niter) -type REAL {
default { alpha_mix(1)=0.7 }
info {
Mixing factor (for each iteration) for updating the scf potential:
vnew(in) = alpha_mix*vold(out) + (1-alpha_mix)*vold(in)
}
}
var nmix_ph -type INTEGER {
info { Number of iterations used in potential mixing. }
default { 4 }
}
var iverbosity -type INTEGER {
default { 0 }
info {
0 = short output
1 = verbose output
}
}
var reduce_io -type LOGICAL {
info { Reduce I/O to the strict minimum. }
default { .false. }
}
var max_seconds -type REAL {
info { Maximum allowed run time before the job stops smoothly. }
default { 1.d7 }
}
var fildyn -type CHARACTER {
info { File where the dynamical matrix is written. }
default { 'matdyn' }
}
var fildrho -type CHARACTER {
info { File where the charge density responses are written. }
default { ' ' }
}
var fildvscf -type CHARACTER {
info {
File where the the potential variation is written
(for later use in electron-phonon calculation).
}
default { ' ' }
}
var epsil -type LOGICAL {
default { .false. }
info {
If .true. in a q=0 calculation for a non metal the
macroscopic dielectric constant of the system is
computed. Do not set epsil to .true. if you have a
metallic system or q/=0: the code will complain and stop
}
}
var lrpa -type LOGICAL {
info {
If .true. the dielectric constant is calculated at the
RPA level with DV_xc=0.
}
default { .false. }
}
var lnoloc -type LOGICAL {
info {
If .true. the dielectric constant is calculated without
local fields, i.e. by setting DV_H=0 and DV_xc=0.
}
default { .false. }
}
var trans -type LOGICAL {
info {
if .true. the phonons are computed
if trans .and. epsil effective charges are calculated
}
default { .true. }
}
var lraman -type LOGICAL {
default { .false. }
info {
if .true. calculate nonresonant Raman coefficients
using second-order response as in:
M. Lazzeri and F. Mauri, Phys. Rev. Lett. 90, 036401 (2003)
}
}
group {
label { Optional variables for Raman: }
var eth_rps -type REAL {
info { threshold for calculation of Pc R |psi> }
default { 1.0d-9 }
}
var eth_ns -type REAL {
info { threshold for non-scf wavefunction calculation }
default { 1.0e-12 }
}
var dek -type REAL {
info { delta_xk used for wavefunction derivation wrt k }
default { 1.0e-3 }
}
}
var recover -type LOGICAL {
info { if .true. restart from an interrupted run }
default { .false. }
}
var elph -type LOGICAL {
default { .false. }
info {
if .true. electron-phonon lambda coeffs are computed
For metals only, requires gaussian smearing.
If elph .and. trans, the lambdas are calculated in the same
run, using the same k-point grid for phonons and lambdas
If elph.and..not.trans, the lambdas are calculated using
previously saved DeltaVscf in fildvscf, previously saved
dynamical matrix, and the present punch file. This allows
the use of a different (larger) k-point grid.
}
}
var zue -type LOGICAL {
info {
if .true. in a q=0 calculation for a non metal the
effective charges are computed from the phonon
density responses. Note that if trans.and.epsil
effective charges are calculated using a different
algorithm. The results should be the same within
numerical noise.
}
}
var elop -type LOGICAL {
default { .false. }
info {
if true calculate electro-optic tensor
}
}
var fpol -type LOGICAL {
default { .false. }
info {
if .true. calculate dynamic polarizabilities
( experimantal stage, see example33 for calculation
of methane )
}
}
var lnscf -type LOGICAL {
info { If .TRUE. the run makes first a nscf calculation. }
default { .false. }
}
var ldisp -type LOGICAL {
default { .false. }
info {
If .TRUE. the run calculates phonons for a grid of
q-points specified by nq1, nq2, nq3 - for direct
calculation of the entire phonon dispersion.
The pw.x data file should not be produced using
"calculation='phonon'" in this case.
}
}
vargroup -type INTEGER {
var nq1
var nq2
var nq3
info {
Parameters of the Monkhorst-Pack grid (no offset) used
when ldisp=.true. Same meaning as for nk1, nk2, nk3
in the input of pw.x.
}
default { 0 }
}
vargroup -type INTEGER {
var iq1
var iq2
var iq3
info {
These go together with nq1, nq2, nq3 and allow to choose
just one point out of the Monkhorst-Pack grid with ldisp=.true.
Note the the actual point chosen is something like
(iq1-1)/nq1, (iq2-1)/nq2, (iq3-1)/nq3 (so, check the
output for what you get). Also make sure that PW left *.wfc
files behind (no 'phonon' is needed though).
}
}
var nrapp -type INTEGER {
default { 0, i.e. use all irreps }
info {
Choose the subset of irreducible representations (irreps)
for which the linear response calculation is performed:
"nrapp" irreps, specified in input (see below) are used.
IMPORTANT:
* nrapp must be <= 3*nat
* do not specify "nat_todo" together with "nrapp"
}
}
var maxirr -type INTEGER {
default { 0, i.e. use all irreps }
info {
Perform calculations only up to the first "maxirr" irreps.
IMPORTANT:
* maxirr must be <= 3*nat
* do not specify "nat_todo" or "nrapp" together with "maxirr"
}
}
var nat_todo -type INTEGER {
default { 0, i.e. displace all atoms }
info {
Choose the subset of atoms to be used in the linear response
calculation: "nat_todo" atoms, specified in input (see below)
are displaced.
IMPORTANT:
* nat_todo <= nat
* do not specify "nrapp" together with "nat_todo"
}
}
}
group {
linecard {
list xq_list -type REAL {
format { xq(1) xq(2) xq(3) }
info {
The phonon wavevector; must be equal to the one used
in the non-selfconsistent calculation (not read if
ldisp is true).
}
}
}
}
choose {
when -test "nrapp was specified" {
linecard {
list irrep_list -type INTEGER {
format { irrep(1) irrep(2) ... irrep(nrapp) }
info {
The list of indices of irreps used in the calculation
if "nrapp" is specified.
}
}
}
}
elsewhen -test "nat_todo was specified" {
linecard {
list nat_todo_list -type INTEGER {
format { atom(1) atom(2) ... atom(nat_todo) }
info {
Contains the list of indices of atoms used in the
calculation if "nat_todo" is specified.
}
}
}
}
}
}

468
doc-def/INPUT_PP.def Normal file
View File

@ -0,0 +1,468 @@
input_description -distribution {Quantum Espresso} -package PWscf -program pp.x {
toc {}
intro {
Purpose of pp.x: data analysis and plotting.
The code performs two steps:
(1) reads the output file produced by pw.x, extract and calculate
the desired quantity (rho, V, ...)
(2) writes the desired quantity to file in a suitable format for
various types of plotting and various plotting programs
The input data of this program are read from standard input
or from a file and have the following format:
NAMELIST &INPUTPP
containing the variables for step (1), followed by
NAMELIST &PLOT
containing the variables for step (2)
The two steps can be performed independently. In order to perform
only step (2), leave namelist &inputpp blank. In order to perform
only step (1), do not specify namelist &plot
Intermediate results from step 1 can be saved to disk (see
variable "filplot" in &inputpp) and later read in step 2.
Since the file with intermediate results is formatted, it
can be safely transferred to a different machine. This
also allows plotting of a linear combination (for instance,
charge differences) by saving two intermediate files and
combining them (see variables "weight" and "filepp" in &plot)
}
namelist INPUTPP {
var prefix -type CHARATER {
info {
prefix of files saved by program pw.x
}
}
var outdir -type CHARACTER {
info {
temporary directory where pw.x files resides
}
}
var filplot -type CHARACTER {
info {
file "filplot" contains the quantity selected by plot_num
(can be saved for further processing)
}
}
var plot_num -type INTEGER {
info {
selects what to save in filplot:
0 = charge
1 = total potential V_bare+V_H + V_xc
2 = local ionic potential
3 = local density of states at e_fermi
4 = local density of electronic entropy
5 = STM images
6 = spin polarization (rho(up)-rho(down))
7 = |psi|^2
8 = electron localization function (ELF)
9 = planar average of all |psi|^2
10 = integrated local density of states (ILDOS)
from emin to emax (emin, emax in eV)
if emax is not specified, emax=E_fermi
11 = the V_bare + V_H potential
12 = the electric field potential
13 = the noncollinear magnetization.
}
}
choose {
when -test "plot_num=0" {
label {
Options for total charge (plot_num=0):
}
var spin_component -type INTEGER {
default 0
info {
0=total charge (default value),
1=spin up charge,
2=spin down charge.
}
}
}
elsewhen -test "plot_num=1" {
label {
Options for total potential (plot_num=1):
}
var spin_component -type INTEGER {
default 0
info {
0=spin averaged potential (default value),
1=spin up potential,
2=spin down potential.
}
}
}
elsewhen -test "plot_num=5" {
label {
Options for STM images (plot_num=5):
}
var sample_bias -type REAL {
info {
the bias of the sample (Ry) in stm images
}
}
var stm_wfc_matching -type LOGICAL {
info {
if .true. match the wavefunctions to an exponentially
vanishing function
if .true. specify also (in celldm(1) units): z and dz variables
}
}
if -test "stm_wfc_matching = .true." {
var z -type REAL {
info {
height of matching
}
}
var dz -type REAL {
info {
distance of next stm image calculation
}
}
}
}
elsewhen -test "plot_num=7" {
label {
Options for |psi|^2 (plot_num=7):
}
var kpoint -type INTEGER {
info {
Unpolarized and noncollinear case: k-point to be plotted
LSDA: k-point and spin polarization to be plotted
(spin-up and spin-down correspond to different k-points!)
}
}
var kband -type INTEGER {
info {
band to be plotted
}
}
var lsign -type LOGICAL {
info {
if true and k point is Gamma, save |psi|^2 sign(psi)
}
}
var spin_component -type INTEGER {
info {
Noncollinear case only:
plot the contribution of the given state to the charge
or to the magnetization along the direction indicated
by spin_component:
0 = charge (default),
1 = x,
2 = y,
3 = z.
Ignored in unpolarized or LSDA case
}
}
}
elsewhen -test "plot_num=10" {
label {
Options for ILDOS (plot_num=10):
}
var emin -type REAL {
info {
lower energy boundary (in eV)
}
}
var emax -type REAL {
info {
upper energy boundary (in eV), i.e. compute
ILDOS from emin to emax
}
}
var spin_component -type INTEGER {
info {
for LSDA case only: plot the contribution to ILDOS of
0 = spin-up + spin-down (default)
1 = spin-up only
2 = spin-down only
}
}
}
elsewhen -test "plot_num=13" {
label {
Options for noncollinear magnetization (plot_num=13):
}
var spin_component -type INTEGER {
default 0
info {
0=absolute value (default value)
1=x component of the magnetization
2=y component of the magnetization
3=z component of the magnetization
}
}
}
message {
Unfinished and untested option:
plot_num = 14, 15, 16 polarisation along x, y, z resp.
epsilon = macroscopic dielectric constant
}
}
}
# END of namelist &INPUTPP
# namelist PLOT
namelist PLOT {
var nfile -type INTEGER {
default 1
status OPTIONAL
info {
the number of data files
}
}
group {
#label { FOR i = 1, nfile: }
dimension filepp -start 1 -end nfile -type CHARACTER {
default { filepp(1)=filplot }
info {
nfile = 1 : file containing the quantity to be plotted
nfile > 1 : see "weight"
}
}
dimension weight -start 1 -end nfile -type REAL {
default { weight(1)=1.0 }
info {
weighing factors: assuming that rho(i) is the quantity
read from filepp(i), the quantity that will be plotted is:
weight(1)*rho(1) + weight(2)*rho(2) + weight(3)*rho(3)+...
}
}
#label {
# END_FOR
#}
message {
BEWARE: atomic coordinates are read from the first file;
if their number is different for different files,
the first file must have the largest number of atoms
}
}
var iflag -type INTEGER {
info {
0 1D plot of the spherical average
1 1D plot
2 2D plot
3 3D plot
4 2D polar plot on a sphere
}
}
var output_format -type INTEGER {
info {
(ignored on 1D plot)
0 format suitable for gnuplot (1D)
1 format suitable for contour.x (2D)
2 format suitable for plotrho (2D)
3 format suitable for XCRYSDEN (1D, 2D, 3D)
4 format suitable for gOpenMol (3D)
(formatted: convert to unformatted *.plt)
5 format suitable for XCRYSDEN (3D)
6 format as gaussian cube file (3D)
(can be read by many programs)
}
}
var fileout -type CHARACTER {
default { standard output }
info {
name of the file to which the plot is written
}
}
choose {
when -test "iflag = 0 or 1" {
label { the following variables are REQUIRED: }
dimension e1 -start 1 -end 3 -type REAL {
info {
3D vector which determines the plotting line
}
}
dimension x0 -start 1 -end 3 -type REAL {
info {
3D vector, origin of the line
}
}
message {
!!! x0 and e1 are in alat units !!!
}
var nx -type INTEGER {
info {
number of points in the line:
rho(i) = rho( x0 + e1 * (i-1)/(nx-1) ), i=1, nx
}
}
}
elsewhen -test "iflag = 2" {
label { the following variables are REQUIRED: }
dimensiongroup -start 1 -end 3 -type REAL {
dimension e1
dimension e2
info {
3D vectors which determine the plotting plane
(must be orthogonal)
}
}
dimension x0 -start 1 -end 3 -type REAL {
info {
3D vector, origin of the plane
}
}
message {
!!! x0, e1, e2 are in alat units !!!
}
vargroup -type INTEGER {
var nx
var ny
info {
Number of points in the plane:
rho(i,j) = rho( x0 + e1 * (i-1)/(nx-1)
+ e2 * (j-1)/(ny-1) ), i=1,nx ; j=1,ny
}
}
}
elsewhen -test "iflag = 3" {
label { the following variables are OPTIONAL: }
dimensiongroup -start 1 -end 3 -type REAL {
dimension e1
dimension e2
dimension e3
info {
3D vectors which determine the plotting parallelepiped
(if present, must be orthogonal)
}
}
dimension x0 -start 1 -end 3 -type REAL {
info {
3D vector, origin of the parallelepiped
}
}
message {
!!! x0, e1, e2, e3 are in alat units !!!
}
vargroup -type INTEGER {
var nx
var ny
var nz
info {
Number of points in the parallelepiped:
rho(i,j,k) = rho( x0 + e1 * (i-1)/nx
+ e2 * (j-1)/ny
+ e3 * (k-1)/nz ),
i = 1, nx ; j = 1, ny ; k = 1, nz
- If output_format = 3 (XCRYSDEN), the above variables
are used to determine the grid to plot.
- If output_format = 5 (XCRYSDEN), the above variables
are ignored, the entire FFT grid is written in the
XCRYSDEN format - works for any crystal axis (VERY FAST)
- If e1, e2, e3, x0 are present, e1 e2 e3 are parallel
to xyz and parallel to crystal axis, a subset of the
FFT grid that approximately covers the parallelepiped
defined by e1, e2, e3, x0, is written (presently only
if output_format = 4, i.e. gopenmol format) - works only
if the crystal axis are parallel to xyz
- Otherwise, the required 3D grid is generated from the
Fourier components (may be VERY slow)
}
}
}
elsewhen -test "iflag = 4" {
label { the following variables are REQUIRED: }
var radius -type REAL {
info {
Radius of the sphere (alat units), centered at (0,0,0)
}
}
vargroup -type INTEGER {
var nx
var ny
info {
Number of points in the polar plane:
phi(i) = 2 pi * (i - 1)/(nx-1), i=1, nx
theta(j) = pi * (j - 1)/(ny-1), j=1, ny
}
}
}
}
}
# END of namelist PLOT
}

179
doc-def/INPUT_PROJWFC.def Normal file
View File

@ -0,0 +1,179 @@
input_description -distribution {Quantum Espresso} -package PWscf -program projwfc.x {
toc {}
intro {
Purpose of projwfc.x:
projects wavefunctions onto orthogonalized atomic wavefunctions,
calculates Lowdin charges, spilling parameter, projected DOS
(separated into up and down components for lSDA)
Structure of the input data:
============================
&INPUTPP
...
/
}
namelist INPUTPP {
var prefix -type CHARACTER {
info {
Prefix of input file produced by pw.x
(wavefunctions are needed).
}
default { 'pwscf' }
}
var outdir -type CHARACTER {
info { directory containing the input file }
default { './' }
}
var ngauss -type INTEGER {
default { 0 }
info {
Type of gaussian broadening:
0 ... Simple Gaussian (default)
1 ... Methfessel-Paxton of order 1
-1 ... Marzari-Vanderbilt "cold smearing"
-99 ... Fermi-Dirac function
}
}
var degauss -type REAL {
default { 0.0 }
info { gaussian broadening, Ry (not eV!) }
}
vargroup -type REAL {
var Emin
var Emax
info { min & max energy (eV) for DOS plot }
default { (band extrema) }
}
var DeltaE -type REAL {
info { energy grid step (eV) }
}
var lsym -type LOGICAL {
default { .true. }
info {
if true the projections are symmetrized
}
}
var filpdos -type CHARACTER {
info { prefix for output files containing PDOS(E) }
default { (value of prefix variable) }
}
var filproj -type CHARACTER {
default { (standard output) }
info {
file containing the projections
}
}
}
section -title Notes {
subsection -title {Format of output files} {
text {
Projections are written to standard output,
and also to file filproj if given as input.
The total DOS and the sum of projected DOS are written to file
"filpdos".pdos_tot.
* The format for the collinear, spin-unpolarized case and the
non-collinear, spin-orbit case is:
E DOS(E) PDOS(E)
...
* The format for the collinear, spin-polarized case is:
E DOSup(E) DOSdw(E) PDOSup(E) PDOSdw(E)
...
* The format for the non-collinear, non spin-orbit case is:
E DOS(E) PDOSup(E) PDOSdw(E)
...
In the collinear case and the non-collinear, non spin-orbit case
projected DOS are written to file "filpdos".pdos_atm#N(X)_wfc#M(l),
where N = atom number , X = atom symbol, M = wfc number, l=s,p,d,f
(one file per atomic wavefunction found in the pseudopotential file)
* The format for the collinear, spin-unpolarized case is:
E LDOS(E) PDOS_1(E) ... PDOS_2l+1(E)
...
where LDOS = \sum m=1,2l+1 PDOS_m(E)
and PDOS_m(E) = projected DOS on atomic wfc with component m
* The format for the collinear, spin-polarized case and the
non-collinear, non spin-orbit case is as above with
two components for both LDOS(E) and PDOS_m(E)
In the non-collinear, spin-orbit case (i.e. if there is at least one
fully relativistic pseudopotential) wavefunctions are projected
onto eigenstates of the total angular-momentum.
Projected DOS are written to file "filpdos".pdos_atm#N(X)_wfc#M(l_j),
where N = atom number , X = atom symbol, M = wfc number, l=s,p,d,f
and j is the value of the total angular momentum.
In this case the format is:
E LDOS(E) PDOS_1(E) ... PDOS_2j+1(E)
...
All DOS(E) are in states/eV plotted vs E in eV
}
}
subsection -title {Orbital Order} {
text {
Order of m-components for each l in the output:
1, cos(phi), sin(phi), cos(2*phi), sin(2*phi), .., cos(l*phi), sin(l*phi)
where phi is the polar angle:x=r cos(theta)cos(phi), y=r cos(theta)sin(phi)
This is determined in file flib/ylmr2.f90 that calculates spherical harmonics.
for l=1:
1 pz (m=0)
2 px (real combination of m=+/-1 with cosine)
3 py (real combination of m=+/-1 with sine)
for l=2:
1 dz2 (m=0)
2 dzx (real combination of m=+/-1 with cosine)
3 dzy (real combination of m=+/-1 with sine)
4 dx2-y2 (real combination of m=+/-2 with cosine)
5 dxy (real combination of m=+/-1 with sine)
}
}
subsection -title {Important notices} {
text {
* The tetrahedron method is presently not implemented.
* Gaussian broadening is used in all cases:
- if degauss is set to some value in namelist &inputpp, that value
(and the optional value for ngauss) is used
- if degauss is NOT set to any value in namelist &inputpp, the
value of degauss and of ngauss are read from the input data
file (they will be the same used in the pw.x calculations)
- if degauss is NOT set to any value in namelist &inputpp, AND
there is no value of degauss and of ngauss in the input data
file, degauss=DeltaE (in Ry) and ngauss=0 will be used
Obsolete variables, ignored:
io_choice
smoothing
}
}
}
}

2276
doc-def/INPUT_PW.def Normal file

File diff suppressed because it is too large Load Diff

237
doc-def/INPUT_PWCOND.def Normal file
View File

@ -0,0 +1,237 @@
input_description -distribution {Quantum Espresso} -package PWscf -program pwcond.x {
toc {}
intro {
This program computes the transmittance of a system and/or its
complex band structure.
It is controlled through the following variables
in the namelist inputcond.
Structure of the input data:
============================
&INPUTCOND
...
/
}
namelist INPUTCOND {
var outdir -type CHARACTER {
info {
temporary directory (as in PWscf)
}
}
var prefixt -type CHARACTER {
info {
prefix for the file (as in PWscf) containing all the
regions (left lead + scatt. reg. + right lead)
}
}
var prefixl -type CHARACTER {
info {
prefix for the file containing only the left lead
}
}
var prefixs -type CHARACTER {
info {
prefix for the file containing the scattering region
}
}
var prefixr -type CHARACTER {
info {
prefix for the file containing only the right lead
}
}
var band_file -type CHARACTER {
info {
file on which the complex bands are saved
}
}
var tran_file -type CHARACTER {
info {
file where the transmission is written
}
}
var save_file -type CHARACTER {
info {
file where the data necessary for PWCOND are written
so that no prefix files of PW are longer needed
}
}
var fil_loc -type CHARACTER {
info {
file on/from which the 2D eigenvalue problem data are
saved/read
}
}
var lwrite_cond -type LOGICAL {
info {
if .t. save the data necessary for PWCOND in save_file
}
}
var lread_cond -type LOGICAL {
info {
if .t. read the data necessary for PWCOND from save_file
}
}
var lwrite_loc -type LOGICAL {
info {
if .t. save 2D eigenvalue problem result in fil_loc
}
}
var lread_loc -type LOGICAL {
info {
if .t. read 2D eigenvalue problem result from fil_loc
}
}
var ikind -type INTEGER {
info {
The kind of conductance calculation:
ikind=0 - just complex band structure (CBS) calculation
ikind=1 - conductance calculation with identical
left and right leads
ikind=2 - conductance calculation with different
left and right leads
}
}
var iofspin -type INTEGER {
info {
spin index for which the calculations are performed
}
}
var llocal -type LOGICAL {
info {
if .t. calculations are done with only local part of PP
}
}
var bdl -type REAL {
info {
right boundary of the left lead (left one is supposed to be at 0)
}
}
var bds -type REAL {
info {
right boundary of the scatt. reg. (left one is at 0 if prefixs
is used and = bdl if prefixt is used)
}
}
var bdr -type REAL {
info {
right boundary of the right lead (left one is at 0 if prefixr
is used and = bds if prefixt is used)
}
}
var nz1 -type INTEGER {
info {
the number of subslabs in the slab (to calculate integrals)
}
}
var energy0 -type REAL {
info {
initial energy
}
}
var denergy -type REAL {
info {
energy step (if denergy=0.0 the energy is read from the list)
}
}
var nenergy -type INTEGER {
info {
number of energies
WARNING: the energy in input file is given in eV taken from Ef,
and denergy should be negative
}
}
var ecut2d -type REAL {
info {
2-D cutoff
}
}
var ewind -type REAL {
info {
the energy window for reduction of 2D plane wave basis set (in XY)
}
}
var epsproj -type REAL {
info {
accuracy of 2D basis set reduction
}
}
var orbj_in -type REAL {
info {
the initial orbital for projecting the transmission
}
}
var orbj_fin -type REAL {
info {
the final orbital for projecting the transmission
}
}
}
card K_and_Energy_Points -nameless 1 {
syntax {
line {
var nkpts -type INTEGER {
info {
Number of k_\perp points
}
}
}
table k_points {
rows -start 1 -end nkpts {
colgroup -type REAL {
col kx
col ky
col weight
info {
k-point coordinates and weights
}
}
}
}
line {
var nenergy -type INTEGER {
info {
number of energy points
}
}
}
}
}
}

View File

@ -0,0 +1,84 @@
input_description -distribution {Quantum Espresso} -package PWscf -program pw_export.x {
toc {}
intro {
Structure of the input data:
============================
&INPUTPP
...
/
}
namelist INPUTPP {
var prefix -type STRING {
status { MANDATORY }
info {
the first part of the name of all the file written by the code
should be equal to the value given in the main calculations.
}
}
var outdir -type STRING {
default { "./" }
info {
the scratch directory where the massive data-files are written
}
}
var pseudo_dir -type STRING {
default { "./" }
info {
directory containing pseudopotential (PP) files
}
}
dimension psfile -start 1 -end ntyp -type STRING {
default { "" }
info {
files containing i-th pseudopotential, where i=1, N_type.
PP numbering must follow the ordering defined in the input of pw.x
}
}
var single_file -type LOGICAL {
default { .FALSE. }
info {
if .TRUE. one-file output is produced
}
}
var ascii -type LOGICAL {
default { .FALSE. }
info {
if .TRUE. output files are textual, otherwise they are partly binary.
}
}
var pp_file -type STRING {
default { "prefix.export/" }
info {
Output file.
If it is omitted, a directory "prefix.export/" is created
in outdir and some output files are put there. Anyway all the data
are accessible through the "prefix.export/index.xml" file which
contains implicit pointers to all the other files in the
export directory. If reading is done by the IOTK library
all data appear to be in index.xml even if physically it is not.
}
}
var uspp_spsi -type LOGICAL {
default { .FALSE. }
info {
when using USPP, if set .TRUE. the code writes S | psi >
and | psi > vectors separately in the output file.
}
}
}
}

38
doc-def/Makefile Normal file
View File

@ -0,0 +1,38 @@
HELPDOC = ../dev-tools/helpdoc
DOC_DIR = ../Doc
ATOMIC_DOC_DIR = ../atomic_doc
HTMLS = \
INPUT_PW.html \
INPUT_PH.html \
INPUT_PP.html \
INPUT_PROJWFC.html \
INPUT_LD1.html \
INPUT_D3.html \
INPUT_DOS.html \
INPUT_BANDS.html \
INPUT_GIPAW.html \
INPUT_CPPP.html \
INPUT_PWCOND.html \
INPUT_pw_export.html
XMLS = $(HTMLS:.html=.xml)
TXTS = $(HTMLS:.html=.txt)
helpdoc: $(HTMLS) $(TXTS) copy copy_ld1
all: helpdoc
copy: $(HTMLS) $(TXTS)
cp $(HTMLS) $(TXTS) $(DOC_DIR)
copy_ld1: INPUT_LD1.html INPUT_LD1.txt
cp INPUT_LD1.html INPUT_LD1.txt $(ATOMIC_DOC_DIR)
$(HTMLS): %.html: %.def input_xx.xsl
$(HELPDOC) $<
$(TXTS): %.txt: %.def
$(HELPDOC) $<
clean:
rm -f $(HTMLS) $(TXTS) $(XMLS) *~

920
doc-def/input_xx.xsl Normal file
View File

@ -0,0 +1,920 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
***
*** THIS FILE IS a XSL STYLESHEET FOR TRANSFORMING INPUT_*.xml to INPUT_*.html
***
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--<xsl:strip-space elements="*"/>-->
<xsl:output method="html"/>
<!-- *** ROOT *** -->
<xsl:template match="/input_description">
<html>
<head>
<xsl:comment> *** FILE AUTOMATICALLY CREATED: DO NOT EDIT, CHANGES WILL BE LOST *** </xsl:comment>
<meta http-equiv="Content-Style-Type" CONTENT="text/css" />
</head>
<body style="background-color: white; font-family: arial, helvetica, sans-serif; font-size: 14px; padding-left: 10; width: 700; ">
<a name="__top__"></a>
<table style="border-width: 0 width: 100% text-align: left; vertical-align: top; background: #00395a;">
<tr>
<th style="margin: 3 3 3 10; background: #00395a; color: #ffffee; ">
<h1 style="margin: 5 10 10 15; text-align: left;"> Input File Description </h1>
<h2 style="margin: 5 10 10 15; text-align: left;"> Program: <xsl:value-of select="@program"/> / <xsl:value-of select="@package"/> / <xsl:value-of select="@distribution"/></h2>
</th>
</tr>
<tr><td style="padding: 10 3 3 3; background: #ffffff; color: #222222; ">
<xsl:apply-templates/>
</td></tr>
</table>
<blockquote>
<small>
This file has been created by helpdoc utility.
</small>
</blockquote>
</body>
</html>
</xsl:template>
<!-- *** TOC *** -->
<xsl:template match="toc">
<blockquote>
<h3>TABLE OF CONTENTS</h3>
<blockquote>
<xsl:for-each select="//intro">
<p><a href="#{generate-id(.)}">INTRODUCTION</a></p>
</xsl:for-each>
<xsl:for-each select="//namelist | //card | //linecard | //section">
<p>
<xsl:choose>
<xsl:when test="name(.)='linecard'">
<a href="#{generate-id(.)}">Line-of-input:</a><xsl:text> </xsl:text>
<xsl:for-each select=".//var | .//list">
<xsl:if test="name(.)='var' or name(.)='dimension'">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test="name(.)='list'">
<a href="#{generate-id(.)}"><xsl:value-of select="format"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:when test="name(.)='section'">
<a href="#{generate-id(.)}"><xsl:value-of select="@title"/></a>
<xsl:apply-templates select="subsection" mode="toc"/>
</xsl:when>
<xsl:otherwise>
<a href="#{generate-id(.)}">
<xsl:if test="name(.)='namelist'">&amp;</xsl:if><xsl:value-of select="@name"/>
</a>
<blockquote>
<xsl:for-each select=".//var | .//dimension | .//list | .//col | .//row">
<xsl:if test="name(.)='var' or name(.)='dimension'">
<xsl:if test="info != '' or
status != '' or
see != '' or
../../vargroup/info != '' or
../../dimensiongroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="name(.)='list'">
<xsl:if test="info != '' or status != '' or see != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="format"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="name(.)='col'">
<xsl:if test="info != '' or status != '' or see != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test="ancestor::colgroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="name(.)='row'">
<xsl:if test="info != '' or status != '' or see != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test="ancestor::rowgroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
<xsl:if test="not(position()=last())">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:for-each>
</blockquote>
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:for-each>
</blockquote>
</blockquote>
</xsl:template>
<xsl:template match="subsection" mode="toc">
<blockquote>
<a href="#{generate-id(.)}"><xsl:value-of select="@title"/></a>
<xsl:apply-templates select="subsubsection" mode="toc"/>
</blockquote>
</xsl:template>
<xsl:template match="subsubsection" mode="toc">
<blockquote>
<a href="#{generate-id(.)}"><xsl:value-of select="@title"/></a>
</blockquote>
</xsl:template>
<!-- back-to-top -->
<xsl:template name="back_to_top">
<div align="right">[<a href="#__top__">Back to Top</a>]</div>
</xsl:template>
<!-- *** INTRO *** -->
<xsl:template match="intro">
<blockquote>
<a name="{generate-id()}">
<h3>INTRODUCTION</h3>
</a>
<blockquote>
<pre>
<xsl:value-of select="."/>
</pre>
</blockquote>
</blockquote>
</xsl:template>
<!-- *** GROUP *** -->
<xsl:template match="group">
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30">
<tr><td>
<xsl:apply-templates/>
</td></tr>
</table>
</xsl:template>
<!-- *** NAMELIST *** -->
<xsl:template match="namelist">
<a name="{generate-id(.)}">
<table border="0" width="100%" style="margin-bottom: 20; ">
<tr>
<th bgcolor="#ddcba6">
<h2 style="margin: 10 10 10 15; text-align: left;"> Namelist: <xsl:value-of select="@name"/> </h2>
</th>
</tr>
<tr><td style="text-align: left; background: #ffebc6; padding: 5 5 5 30; ">
<table style="border-color: #505087; border-style: solid; border-width: 0; margin-bottom: 10; table-layout: auto; width: 700; ">
<tbody>
<tr><td>
<xsl:apply-templates/>
</td></tr>
</tbody>
</table>
</td></tr>
</table>
</a>
</xsl:template>
<!-- *** CARD *** -->
<xsl:template match="card">
<a name="{generate-id(.)}">
<table border="0" width="100%" style="margin-bottom: 20; ">
<tr>
<th bgcolor="#ddcba6">
<h2 style="margin: 10 10 10 15; text-align: left;">
Card: <xsl:value-of select="@name"/>
<xsl:choose>
<xsl:when test="flag/@use = 'optional'">
<xsl:text> { </xsl:text>
<xsl:value-of select="flag/enum" />
<xsl:text> } </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> </xsl:text><xsl:value-of select="flag/enum" />
</xsl:otherwise>
</xsl:choose>
</h2>
</th>
</tr>
<tr><td style="text-align: left; background: #ffebc6; padding: 5 5 5 30; ">
<table style="border-color: #505087; border-style: solid; border-width: 0; margin-bottom: 10; table-layout: auto; width: 700; ">
<tbody>
<tr><td>
<xsl:apply-templates select="syntax | if | choose | label | message"/>
</td></tr>
<tr><td>
<h3>Description of items:</h3>
<blockquote>
<pre><xsl:value-of select="flag/info"/></pre>
<xsl:apply-templates select="descendant::vargroup | descendant::var | descendant::list | descendant::table" mode="card_description"/>
</blockquote>
</td></tr>
</tbody>
</table>
</td></tr>
</table>
</a>
</xsl:template>
<!-- card/syntax -->
<xsl:template match="syntax">
<h3>Syntax:</h3>
<blockquote>
<xsl:if test="boolean(ancestor::card/@nameless) = false()">
<b>
<xsl:value-of select="ancestor::card/@name"/>
<xsl:choose>
<xsl:when test="normalize-space(@flag) = ''">
<xsl:message>empty -flag</xsl:message>
<xsl:choose>
<xsl:when test="ancestor::card/flag/@use = 'optional'">
<xsl:text> { </xsl:text>
<xsl:value-of select="ancestor::card/flag/enum" />
<xsl:text> } </xsl:text>
</xsl:when>
<xsl:when test="ancestor::card/flag/@use = 'conditional'">
<xsl:text> [ </xsl:text>
<xsl:value-of select="ancestor::card/flag/enum" />
<xsl:text> ] </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> </xsl:text><xsl:value-of select="ancestor::card/flag/enum" />
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:message>non-empty -flag; <xsl:value-of select="name(.)"/>;<xsl:value-of select="@flag"/>;</xsl:message>
<xsl:text> </xsl:text><xsl:value-of select="@flag" />
</xsl:otherwise>
</xsl:choose>
</b>
<br/>
</xsl:if>
<xsl:apply-templates select="table | line | optional | conditional | list" mode="syntax"/>
</blockquote>
</xsl:template>
<!-- card//syntax//line -->
<xsl:template match="line" mode="syntax">
<xsl:apply-templates select="optional | conditional | var | keyword | vargroup | list" mode="syntax"/>
<br/>
</xsl:template>
<!-- card//syntax//optional -->
<xsl:template match="optional" mode="syntax">
<!--<div style="background: #eeeeee; color: #555555;">-->
<xsl:text> { </xsl:text>
<xsl:apply-templates select="line | var | list | keyword | table" mode="syntax"/>
<xsl:text> } </xsl:text>
<!--</div>-->
</xsl:template>
<!-- card//syntax//conditional -->
<xsl:template match="conditional" mode="syntax">
<xsl:text> [ </xsl:text>
<xsl:apply-templates select="line | var | list | keyword | table" mode="syntax"/>
<xsl:text> ] </xsl:text>
</xsl:template>
<!-- card//syntax//keyword -->
<xsl:template match="keyword" mode="syntax">
<b><xsl:value-of select="@name"/></b><xsl:text>&#160;&#160;</xsl:text>
</xsl:template>
<!-- card//syntax//list -->
<xsl:template match="list" mode="syntax">
<i>
<xsl:choose>
<xsl:when test="info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="format"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format"/>
</xsl:otherwise>
</xsl:choose>
</i>
<xsl:text>&#160;&#160;</xsl:text>
</xsl:template>
<!-- card//syntax//var -->
<xsl:template match="var" mode="syntax">
<xsl:message>var query = <xsl:value-of select="child::node()"/> </xsl:message>
<i>
<xsl:choose>
<xsl:when test="info != '' or status != '' or see != '' or ../../vargroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</i>
<xsl:text>&#160;&#160;</xsl:text>
</xsl:template>
<!-- card//syntax//vargroup -->
<xsl:template match="vargroup" mode="syntax">
<xsl:apply-templates select="var" mode="syntax"/>
</xsl:template>
<!-- card//syntax//table -->
<xsl:template match="table" mode="syntax">
<a name="{generate-id(.)}">
<table>
<xsl:apply-templates select="rows | cols" mode="syntaxTableMode"/>
</table>
</a>
</xsl:template>
<!-- sytntax//table/rows -->
<xsl:template match="rows" mode="syntaxTableMode">
<xsl:message>//card//syntax//table/rows</xsl:message>
<tr>
<xsl:call-template name="row">
<xsl:with-param name="rowID"><xsl:value-of select="@start"/></xsl:with-param>
</xsl:call-template>
</tr>
<tr>
<xsl:call-template name="row">
<xsl:with-param name="rowID"><xsl:value-of select="number(@start+1)"/></xsl:with-param>
</xsl:call-template>
</tr>
<xsl:choose>
<xsl:when test="number(@end) != @end">
<tr><td colspan="2"><xsl:text>&#160;. . .</xsl:text></td></tr>
<tr>
<xsl:call-template name="row">
<xsl:with-param name="rowID"><xsl:value-of select="@end"/></xsl:with-param>
</xsl:call-template>
</tr>
</xsl:when>
<xsl:otherwise>
<xsl:if test="number(@end) > number(@start+2)">
<tr><td colspan="2"><xsl:text>&#160;. . .</xsl:text></td></tr>
</xsl:if>
<xsl:if test="number(@end) > number(@start+1)">
<tr>
<xsl:call-template name="row">
<xsl:with-param name="rowID"><xsl:value-of select="@end"/></xsl:with-param>
</xsl:call-template>
</tr>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="row">
<xsl:param name="rowID" select="1"/>
<xsl:message>//card//syntax//table//rows->rows(<xsl:value-of select="name(.)"/>)</xsl:message>
<xsl:apply-templates select="col | colgroup | optional | conditional" mode="rowMode">
<xsl:with-param name="rowID" select="$rowID"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="colgroup" mode="rowMode">
<xsl:param name="rowID"/>
<xsl:apply-templates select="col | optional | conditional" mode="rowMode">
<xsl:with-param name="rowID" select="$rowID"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="optional" mode="rowMode">
<xsl:param name="rowID"/>
<td><xsl:text> { </xsl:text></td>
<xsl:apply-templates select="col | colgroup | conditional | optional" mode="rowMode">
<xsl:with-param name="rowID" select="$rowID"/>
</xsl:apply-templates>
<td><xsl:text> } </xsl:text></td>
</xsl:template>
<xsl:template match="conditional" mode="rowMode">
<xsl:param name="rowID"/>
<td><xsl:text> [ </xsl:text></td>
<xsl:apply-templates select="col | colgroup | conditional | optional" mode="rowMode">
<xsl:with-param name="rowID" select="$rowID"/>
</xsl:apply-templates>
<td><xsl:text> ] </xsl:text></td>
</xsl:template>
<xsl:template match="col" mode="rowMode">
<xsl:param name="rowID"/>
<td>
<xsl:text>&#160;</xsl:text>
<i>
<xsl:message>col query = <xsl:value-of select="child::node()"/> </xsl:message>
<xsl:choose>
<xsl:when test="info != '' or status != '' or see != '' or ../../colgroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/>(<xsl:value-of select="$rowID"/>)</a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>(<xsl:value-of select="$rowID"/>)
</xsl:otherwise>
</xsl:choose>
</i>
<xsl:text>&#160;</xsl:text>
</td>
</xsl:template>
<!-- syntax//table/cols -->
<xsl:template match="cols" mode="syntaxTableMode">
<xsl:message>//card//syntax//table/cols</xsl:message>
<xsl:apply-templates select="row | rowgroup | optional | conditional" mode="colsMode">
<xsl:with-param name="colsOptional" select="false()"/>
<xsl:with-param name="colsConditional" select="false()"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="row" mode="colsMode">
<xsl:param name="colsOptional" select="false()"/>
<xsl:param name="colsConditional" select="false()"/>
<tr>
<td align="right">
<xsl:if test="$colsOptional = true()"><xsl:text>{ &#160;</xsl:text></xsl:if>
<xsl:if test="$colsConditional = true()"><xsl:text>[ &#160;</xsl:text></xsl:if>
</td>
<xsl:call-template name="insertColumns"/>
<td align="left">
<xsl:if test="$colsConditional = true()"><xsl:text>&#160; ]</xsl:text></xsl:if>
<xsl:if test="$colsOptional = true()"><xsl:text>&#160; }</xsl:text></xsl:if>
</td>
</tr>
</xsl:template>
<xsl:template match="rowgroup" mode="colsMode">
<xsl:param name="colsOptional"/>
<xsl:param name="colsConditional"/>
<xsl:apply-templates select="row | optional | conditional" mode="colsMode">
<xsl:with-param name="colsOptional" select="$colsOptional"/>
<xsl:with-param name="colsConditional" select="$colsConditional"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="optional" mode="colsMode">
<xsl:param name="colsOptional"/>
<xsl:param name="colsConditional"/>
<xsl:apply-templates select="row | rowgroup | conditional" mode="colsMode">
<xsl:with-param name="colsOptional" select="true()"/>
<xsl:with-param name="colsConditional" select="$colsConditional"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="conditional" mode="colsMode">
<xsl:param name="colsOptional"/>
<xsl:param name="colsConditional"/>
<xsl:apply-templates select="row | rowgroup | optional" mode="colsMode">
<xsl:with-param name="colsOptional" select="$colsOptional"/>
<xsl:with-param name="colsConditional" select="true()"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template name="insertColumns">
<xsl:call-template name="insertCol">
<xsl:with-param name="colID" select="ancestor::cols/@start"/>
</xsl:call-template>
<xsl:call-template name="insertCol">
<xsl:with-param name="colID" select="number(ancestor::cols/@start+1)"/>
</xsl:call-template>
<xsl:choose>
<xsl:when test="number(ancestor::cols/@end) != ancestor::cols/@end">
<td><xsl:text>&#160;. . .</xsl:text></td>
<xsl:call-template name="insertCol">
<xsl:with-param name="colID" select="ancestor::cols/@end"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="number(ancestor::cols/@end) > number(ancestor::cols/@start+2)">
<td><xsl:text>&#160;. . .</xsl:text></td>
</xsl:if>
<xsl:if test="number(ancestor::cols/@end) > number(ancestor::cols/@start+1)">
<xsl:call-template name="insertCol">
<xsl:with-param name="colID" select="ancestor::cols/@end"/>
</xsl:call-template>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertCol">
<xsl:param name="colID"/>
<xsl:message>
node=<xsl:value-of select="name(.)"/>
</xsl:message>
<td>
<xsl:text>&#160;</xsl:text>
<i>
<xsl:choose>
<xsl:when test="info != '' or status != '' or see != '' or ../../rowgroup/info != ''">
<a href="#{generate-id(.)}"><xsl:value-of select="@name"/>(<xsl:value-of select="$colID"/>)</a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>(<xsl:value-of select="$colID"/>)
</xsl:otherwise>
</xsl:choose>
</i>
<xsl:text>&#160;</xsl:text>
</td>
</xsl:template>
<!-- *** LINECARD *** -->
<xsl:template match="linecard">
<a name="{generate-id(.)}">
<table border="0" width="100%" style="margin-bottom: 20; ">
<tr>
<th bgcolor="#ddcba6">
<h3 style="margin: 10 10 10 15; text-align: left;">
Line of input
</h3>
</th>
</tr>
<tr><td style="text-align: left; background: #ffebc6; padding: 5 5 5 30; ">
<table style="border-color: #505087; border-style: solid; border-width: 0; margin-bottom: 10; table-layout: auto; width: 700; ">
<tbody>
<tr><td>
<h3>Syntax:</h3>
<blockquote>
<xsl:apply-templates select="keyword | var | vargroup | list | optional | conditional" mode="syntax"/>
</blockquote>
</td></tr>
<tr><td>
<h3>Description of items:</h3>
<blockquote>
<xsl:apply-templates select="descendant::vargroup | descendant::var | descendant::list"/>
</blockquote>
</td></tr>
</tbody>
</table>
</td></tr>
</table>
</a>
</xsl:template>
<!-- *** LABEL *** -->
<xsl:template match="label">
<b><xsl:value-of select="."/></b><p/>
</xsl:template>
<!-- *** MESSAGE *** -->
<xsl:template match="message">
<pre>
<xsl:value-of select="."/>
</pre>
</xsl:template>
<!-- *** IF *** -->
<xsl:template match="if">
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 5">
<tr><td>
<b>IF </b> <xsl:value-of select="@test"/> : <!-- <xsl:apply-templates select="label"/> -->
<blockquote>
<xsl:apply-templates/>
</blockquote>
</td></tr>
</table>
</xsl:template>
<!-- *** CHOOSE ... *** -->
<xsl:template match="choose">
<table style="border-color: #bb9977; border-style: solid; border-width: 1; margin-bottom: 10; table-layout: auto; width: 100%; padding: 5 5 0 5">
<tr><td>
<xsl:apply-templates select="when"/>
<xsl:apply-templates select="elsewhen"/>
<xsl:apply-templates select="otherwise"/>
</td></tr>
<xsl:apply-templates select="message | label" mode="choose"/>
</table>
</xsl:template>
<xsl:template match="when">
<b>IF </b> <em><xsl:value-of select="@test"/></em> : <!-- <xsl:apply-templates select="label"/> -->
<blockquote>
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30">
<tr><td>
<xsl:apply-templates/>
</td></tr>
</table>
</blockquote>
</xsl:template>
<xsl:template match="elsewhen">
<b>ELSEIF </b> <em><xsl:value-of select="@test"/></em> : <!-- <xsl:apply-templates select="label"/> -->
<blockquote>
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30">
<tr><td>
<xsl:apply-templates/>
</td></tr>
</table>
</blockquote>
</xsl:template>
<xsl:template match="otherwise">
<b>ELSE </b>
<blockquote>
<table style="border-color: #bb9977; border-style: solid; border-width: 3; margin-bottom: 10; table-layout: auto; background-color: #FFddbb; width: 100%; padding: 5 5 0 30">
<tr><td>
<xsl:apply-templates/>
</td></tr>
</table>
</blockquote>
</xsl:template>
<!-- *** VARGROUP | DIMENSIONGROUP *** -->
<xsl:template match="vargroup | dimensiongroup" mode="card_description">
<!--<xsl:if test="child::node() != ''">-->
<xsl:if test="info != '' or status != '' or see != ''">
<xsl:apply-templates select="."/>
</xsl:if>
</xsl:template>
<!-- *** VAR | DIMENSION | LIST *** -->
<xsl:template match="var | list | dimension" mode="card_description">
<!--<xsl:if test="child::node() != ''">-->
<xsl:if test="info != '' or status != '' or see != ''">
<xsl:apply-templates select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="var | list | dimension">
<xsl:if test="name(..) != 'vargroup' and name(..) != 'dimensiongroup'">
<a name="{generate-id(.)}">
<a name="{@name}">
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<xsl:choose>
<xsl:when test="name(.)='var'">
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">
<xsl:value-of select="@name"/>
</th>
</xsl:when>
<xsl:when test="name(.)='dimension'">
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">
<xsl:value-of select="@name"/>(i), i=<xsl:value-of select="@start"/>,<xsl:value-of select="@end"/>
</th>
</xsl:when>
<xsl:otherwise>
<th width="20%" style="white-space: nowrap; text-align: left; vertical-align: top; background: #ffff99; padding: 2 2 2 10; ">
<xsl:value-of select="format"/>
</th>
</xsl:otherwise>
</xsl:choose>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">
<xsl:value-of select="@type"/>
</td>
</tr>
<xsl:apply-templates select="default"/>
<xsl:apply-templates select="status"/>
<xsl:apply-templates select="see"/>
<xsl:apply-templates select="info"/>
</table>
<xsl:call-template name="back_to_top"/>
</a>
</a>
</xsl:if>
</xsl:template>
<!-- *** VARGROUP | DIMENSIONGROUP *** -->
<xsl:template match="vargroup | dimensiongroup">
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="white-space: nowrap; background: #ffff99; padding: 2 2 2 10; ">
<xsl:if test="name(.)='vargroup'">
<xsl:for-each select="var">
<a name="{generate-id(.)}">
<a name="{@name}">
<xsl:value-of select="@name"/><xsl:if test="not(position()=last())">, </xsl:if>
</a>
</a>
</xsl:for-each>
</xsl:if>
<xsl:if test="name(.)='dimensiongroup'">
<xsl:for-each select="dimension">
<a name="{generate-id(.)}">
<a name="{@name}">
<xsl:value-of select="@name"/>(i),
<xsl:if test="position()=last()">
i=<xsl:value-of select="../@start"/>,<xsl:value-of select="../@end"/>
</xsl:if>
</a>
</a>
</xsl:for-each>
</xsl:if>
</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">
<xsl:value-of select="@type"/>
</td>
</tr>
<xsl:apply-templates select="default"/>
<xsl:apply-templates select="status"/>
<xsl:apply-templates select="see"/>
<xsl:apply-templates select="info"/>
</table>
<xsl:call-template name="back_to_top"/>
</xsl:template>
<!-- *** VAR's elements *** -->
<xsl:template match="default">
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "> <i>Default:</i> </td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; ">
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
<xsl:template match="status">
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "> <i>Status:</i> </td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; ">
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
<xsl:template match="see">
<tr>
<td style="text-align: right; vertical-align: top; background: #ffffc3; padding: 2 10 2 10; "> <i>See:</i> </td>
<td style="text-align: left; vertical-align: top; background: #fff3d9; padding: 2 2 2 5; ">
<a href="#{normalize-space(.)}"><xsl:value-of select="."/></a>
<!--<xsl:value-of select="."/>-->
</td>
</tr>
</xsl:template>
<xsl:template match="info">
<tr><td align="left" valign="top" colspan="2">
<blockquote>
<pre><xsl:value-of select="."/></pre>
</blockquote>
</td></tr>
</xsl:template>
<!-- *** TABLE *** -->
<xsl:template match="table" mode="card_description">
<xsl:apply-templates select="rows | cols" mode="table"/>
</xsl:template>
<xsl:template match="rows | cols" mode="table">
<xsl:apply-templates select="col | colgroup | row | rowgroup | optional | conditional" mode="table"/>
</xsl:template>
<xsl:template match="optional | conditional" mode="table">
<xsl:apply-templates select="col | colgroup | row | rowgroup | optional | conditional" mode="table"/>
</xsl:template>
<xsl:template match="colgroup | rowgroup" mode="table">
<xsl:if test="info != '' or status != '' or see != ''">
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th width="20%" align="left" valign="top" style="background: #ffff99; padding: 2 2 2 10; ">
<xsl:for-each select=".//col | .//row">
<a name="{@name}"><a name="{generate-id(.)}">
<xsl:value-of select="@name"/>
</a></a>
<xsl:if test="not(position()=last())">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">
<xsl:value-of select="@type"/>
</td>
</tr>
<xsl:apply-templates select="default"/>
<xsl:apply-templates select="status"/>
<xsl:apply-templates select="see"/>
<xsl:apply-templates select="info"/>
</table>
<xsl:call-template name="back_to_top"/>
</xsl:if>
</xsl:template>
<xsl:template match="col | row" mode="table">
<!--<xsl:if test="child::node() != ''">-->
<xsl:if test="info != '' or status != '' or see != ''">
<table width="100%" style="border-color: #b5b500; border-style: solid; border-width: 2; margin-bottom: 10; table-layout: auto; background-color: #FFFFFF;">
<tr>
<th align="left" valign="top" width="20%" style="background: #ffff99; padding: 2 2 2 10; ">
<a name="{@name}"><a name="{generate-id(.)}">
<xsl:value-of select="@name"/>
</a></a>
</th>
<td style="text-align: left; vertical-align: top; background: #ffffc3; padding: 2 2 2 5; ">
<xsl:value-of select="@type"/>
</td>
</tr>
<xsl:apply-templates select="default"/>
<xsl:apply-templates select="status"/>
<xsl:apply-templates select="see"/>
<xsl:apply-templates select="info"/>
</table>
<xsl:call-template name="back_to_top"/>
</xsl:if>
</xsl:template>
<!-- *** SECTION *** -->
<xsl:template match="section">
<blockquote>
<a name="{generate-id(.)}">
<h3><xsl:value-of select="@title"/></h3>
</a>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<xsl:template match="subsection">
<blockquote>
<a name="{generate-id(.)}">
<h4><xsl:value-of select="@title"/></h4>
</a>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<xsl:template match="subsubsection">
<blockquote>
<a name="{generate-id(.)}">
<h5><xsl:value-of select="@title"/></h5>
</a>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<xsl:template match="paragraph">
<blockquote>
<a name="{generate-id(.)}">
<h6><xsl:value-of select="@title"/></h6>
<xsl:apply-templates/>
</a>
</blockquote>
</xsl:template>
<xsl:template match="text">
<blockquote>
<pre><xsl:value-of select="."/></pre>
</blockquote>
</xsl:template>
</xsl:stylesheet>