mirror of https://gitlab.com/QEF/q-e.git
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:
parent
533d2bd45c
commit
bf4d5b5d5c
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 ) }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -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.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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) *~
|
|
@ -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'">&</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>  </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>  </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>  </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> . . .</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> . . .</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> </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> </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>{  </xsl:text></xsl:if>
|
||||
<xsl:if test="$colsConditional = true()"><xsl:text>[  </xsl:text></xsl:if>
|
||||
</td>
|
||||
<xsl:call-template name="insertColumns"/>
|
||||
<td align="left">
|
||||
<xsl:if test="$colsConditional = true()"><xsl:text>  ]</xsl:text></xsl:if>
|
||||
<xsl:if test="$colsOptional = true()"><xsl:text>  }</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> . . .</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> . . .</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> </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> </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>
|
Loading…
Reference in New Issue