Workflow¶
DMFTwDFT combines a DFT calculation, a Wannier90 projection, and a DMFT self-consistency loop. The main DMFT executable computes the local Green’s function G_loc.out and hybridization function Delta.out from the current self-energy sig.inp. The impurity solver then updates the self-energy, and the process repeats until the lattice and impurity quantities converge.
The calculation steps are,
Configure
input.tomlfor DFT+DMFT parameters,para_com.datfor parallelization of DMFT, and optionallypara_com_dft.datfor parallelization of DFT. The content of bothpara_com.datandpara_com_dft.datismpirun -n <N>, where<N>is the number of MPI processes.Within
input.toml, define a Wannier subspace for the correlated orbitals.Run
DMFT.pyto launch the DFT+DMFT calculation.Inspect
INFO_ITERfor convergence. Based on thesig_tolvalue ininput.toml(defaultsig_tolis 1E\(^{-03}\) eV), the DMFT loop will stop when the required self-energy convergence is reached.Run
postDMFT.pyfor analytic continuation, density of states, and band structures.Optionally, run utility scripts for further analysis.
Wannier Subspace¶
Choose the Wannier energy window from the DFT band structure, usually with the help of orbital-projected bands. The window should contain the correlated orbitals and any strongly hybridized states needed to represent the low-energy subspace.
In input.toml, the window is set by ewin relative to the DFT Fermi energy. For example, the LaNiO\(_3\) VASP example uses:
ewin = [-8, 3.1]
If the DFT Fermi level is 7.6986 eV and the desired absolute window is approximately -8 eV to 3 eV relative to the Fermi level, the wannier90.win disentanglement limits are shifted by the Fermi level:
dis_win_min = -0.3014
dis_win_max = 10.6986
num_wann = 28
For transition-metal oxides, the projection often includes metal \(d\) orbitals and oxygen \(p\) orbitals. In the LaNiO\(_3\) example, 2 Ni atoms contribute 10 \(d\) Wannier functions and 6 O atoms contribute 18 \(p\) Wannier functions, for num_wann = 28.
For low-symmetry octahedral environments, rotate local \(d\) axes when needed with the L_rot parameter to reduce off-diagonal Hamiltonian terms in the correlated basis. This utilizes the generate_win.py helper functions to generate local projection axes.
Input Parameters¶
Most calculation parameters live under the [p] section in input.toml. Please refer to the DMFTwDFT publication (Singh, V., Herath, U., et al. Comput. Phys. Commun. 261, 107778 (2021)) for further details and physical context of the parameters. The following table summarizes the most important parameters for a DFT+DMFT calculation.
Parameter |
Definition |
|---|---|
|
Number of full DFT+DMFT iterations. |
|
Number of DMFT self-consistency iterations per outer loop. |
|
Number of DFT iterations in a charge-self-consistent outer loop. |
|
Total number of electrons in the Wannier subspace. E.g., for LaNiO\(_3\) with 2 Ni ions and 6 O ions, |
|
Nominal occupancy of \(d\) or \(f\) electrons in a correlated atom. Used for the initial guess of self-energy. Initialize it as the DFT occupancy of the correlated atom or the nominal electron number. |
|
Number of DMFT spin channels. Use |
|
Atom species used to construct the Wannier basis. |
|
Orbital channels used to construct the Wannier basis. |
|
Whether to rotate local projection axes for each atom/orbital channel. Use |
|
Correlated atoms. Symmetry-equivalent atoms can be grouped together. |
|
Correlated orbitals on each correlated atom. Orbitals listed here are treated by DMFT; other orbitals in the Wannier subspace are treated outside the impurity problem. |
|
Hubbard interaction for each correlated atom group. |
|
Hund coupling for each correlated atom group. |
|
Double-counting correction parameter. |
|
Mixing parameter between previous and current self-energies. |
|
Dense k-point mesh used for the DMFT Wannier k-sum. This is often chosen larger than the DFT k-mesh because the Wannier interpolation is cheaper than the DFT calculation. |
|
Wannier projection energy window relative to the DFT Fermi energy. |
|
Number of Matsubara frequencies for k-sum |
|
Double-counting correction type. See section “2.4. Total energy and double counting correction” in the publication for more details. Default: 1 |
|
Steps for the chemical potential convergence |
|
Default: 0 [0: Use Nd_latt, 1: Use Nd_imp] |
|
Tolerance for self-energy convergence to end calculation. Default: 1E\(^{-03}\) |
|
Wannier90 |
|
Wannier90 |
|
Wannier90 |
|
Optional Wannier90 |
|
Optional list of DFT bands to exclude from the Wannier projection, passed through to Wannier90 unchanged. |
Parameters ending in _win are written to wannier90.win and affect the Wannier90 step alone, not the DMFT loop. They are named after the corresponding Wannier90 keywords, with the suffix separating them from the similarly named DMFT parameters above, such as Niter, Nit, and mu_iter.
The [pC] table contains impurity-solver settings and the [pD] table contains CIX/atomic solver parameters passed to the impurity setup. For these solver-specific parameters, refer to the CTQMC documentation on the eDMFT website.
Running a Calculation¶
Run DMFT.py from a calculation directory containing input.toml, para_com.dat, and the DFT inputs required by the selected backend. The -h or --help option lists a comprehensive set of available input arguments for DMFT.py. The main subcommands are ac, dos, and bands. The --help option for each subcommand lists the available options.
Examples,
DMFT.py dmft --dft vasp
DMFT.py dmft --dft siesta --structure-name SrVO3
DMFT.py dmft --dft qe --structure-name SrVO3
DMFT.py dmft --dft qe --aiida --verbose
Use the hf subcommand instead of dmft to run the Hartree-Fock path for the correlated orbitals. Use --restart to restart from the beginning. This discards sig.inp and generates a fresh non-interacting self-energy with sigzero.py, and clears the accumulated iterations.log. Without it, DMFT.py resumes an existing calculation and the converged sig.inp from the previous run is carried forward as the starting self-energy. For SIESTA and QE, --structure-name should match the seed name used by files such as <seed>.fdf, <seed>.scf.in, and Wannier90 outputs.
para_com.dat contains the MPI command for DMFTwDFT and the impurity solver, for example,
mpirun -n 16
If the DFT executable needs a different MPI command, place it in para_com_dft.dat; otherwise DMFTwDFT reuses para_com.dat.
A collection of example workflows for VASP, SIESTA, and Quantum Espresso is provided in Examples.
Output Files¶
The main runtime files are written inside the generated DMFT or HF directory.
File |
Description |
|---|---|
|
Main convergence table. Columns include DFT/DMFT iterations, lattice/impurity occupancy, lattice/impurity self-energy, total-energy estimates, and charge difference for charge-self-consistent runs. See Monitoring Progress. |
|
DMFT k-sum information such as chemical potential, total electron count, occupancies, kinetic energy, and self-energy high-frequency terms. |
|
Occupancy matrix information. |
|
DFT energy and DMFT energy corrections. |
|
Timing information. |
|
DFT-loop summary for charge-self-consistent calculations. |
|
Local Green’s function from the lattice k-sum. |
|
Hybridization function. |
|
Current self-energy on the imaginary axis. Archived as |
|
Iteration history preserved across resumed calculations. One row per launch of |
Monitoring Progress¶
During a run, INFO_ITER is usually the first file to inspect. It records the total or outer DFT+DMFT iteration, the inner DMFT iteration, lattice and impurity occupancies, self-energy and double-counting related quantities, two total-energy estimates, and the charge difference between consecutive charge updates.
A typical INFO_ITER block has the form,
DFT_iter DMFT_iter Nd_latt Nd_imp (Sigoo-Vdc)_latt (Sigoo-Vdc)_imp TOT_E(Tr(SigG)) TOT_E(EPOT_imp) charge_diff
1 10 7.798655 7.797084 1.669025 1.644641 -68.440528 -68.086689 0.000000
1 11 7.798642 7.797683 1.668703 1.644087 -68.444524 -68.088970 0.000000
1 12 7.798855 7.796977 1.669338 1.644704 -68.446219 -68.090861 0.000000
The columns are (from left to right),
Column |
Definition |
|---|---|
|
Total DFT+DMFT iteration step. For non-charge-self-consistent calculations this stays at |
|
Inner DMFT iteration step within the current outer DFT+DMFT iteration. For example, |
|
Correlated-shell occupancy from the local lattice calculation, i.e. from the lattice Green’s function. In the examples this is the lattice \(d\) occupancy. |
|
Correlated-shell occupancy from the CTQMC impurity calculation. A converged DMFT loop should make this impurity occupancy equal, within tolerance, to |
|
Lattice value of the high-frequency self-energy with double-counting correction |
|
Impurity/CTQMC value of high-frequency self-energy with double-counting correction. A converged DMFT loop should make this impurity value consistent with |
|
Total energy computed with the Migdal-Galitskii method using the |
|
Total energy computed using the CTQMC-sampled impurity potential energy. |
|
Charge-density difference between two consecutive outer steps. For non-charge-self-consistent calculations this is |
To judge convergence, compare lattice and impurity quantities in INFO_ITER. In a converged DMFT loop, Nd_latt and Nd_imp should approach each other, and the lattice and impurity (Sigoo - Vdc) values should stabilize.
INFO_ITER is rewritten from scratch each time DMFT.py is launched, so it describes only the most recent run. The cumulative history is kept in iterations.log, which holds one row per launch, in chronological order,
1 2
1 2
Each row gives the last DFT+DMFT iteration and DMFT iteration that launch completed, using the same two counters as the first two columns of INFO_ITER. The example above is a calculation that was started once and resumed once, with two DMFT iterations completed in each, four in total. --restart deletes the file, so an existing iterations.log always describes the current sequence of resumes.
Use INFO_TIME to identify expensive stages or stalled calculations. Use INFO_KSUM to inspect the lattice k-sum, including chemical potential, total electron count, occupancies, kinetic energy, and self-energy high-frequency terms. Use INFO_ENERGY when comparing total-energy estimates across iterations.
Post-Processing¶
Run postDMFT.py inside the completed DMFT or HF directory. The -h or --help option lists a comprehensive set of available input arguments for each subcommand. The main subcommands are ac, dos, and bands. The --help option for each subcommand lists the available options.
Analytic continuation averages the last self-energy files and writes ac/Sig.out on the real axis,
postDMFT.py ac --average 4
Density-of-states calculations use the real-axis self-energy and write outputs under dos,
postDMFT.py dos
Band-structure calculations write outputs under bands,
postDMFT.py bands --plot-plain
postDMFT.py bands --plot-plain --auto-k-path
postDMFT.py bands --plot-partial --wannier-orbitals 2 3 5
postDMFT.py bands --spin-polarized
postDMFT.py bands --compare-dft
Choosing the k-path¶
The band-structure k-path can be set in three ways.
By default, postDMFT.py bands uses a simple-cubic path, \(\Gamma\)-\(X\)-\(M\)-\(\Gamma\)-\(R\), which is appropriate for the SrVO\(_3\) examples and little else.
For any other structure, give the path explicitly. --k-point-list takes one high-symmetry point per flag occurrence, and --k-point-names takes the matching labels in the same order,
postDMFT.py bands --plot-plain \
--k-point-list 0 0 0 --k-point-list 0.5 0 0.5 --k-point-list 0.375 0.375 0.75 \
--k-point-names '$\Gamma$' '$X$' '$K$'
Repeat --k-point-list once per point, with three fractional coordinates each. --k-point-names must have exactly one entry per point, otherwise the run stops with an error rather than producing a mislabelled axis.
Alternatively, --auto-k-path reads the path from a VASP line-mode KPOINTS file, taken from the current directory unless --kpoints gives a path to one,
postDMFT.py bands --plot-plain --auto-k-path
postDMFT.py bands --plot-plain --auto-k-path --kpoints ../DFT/KPOINTS
The KPOINTS file must be in line mode, with the number of points per segment on the second line, the Reciprocal keyword, and a ! label on every k-point line,
k-points along high symmetry lines
40
Line-mode
Reciprocal
0.0 0.0 0.0 ! GAMMA
0.5 0.0 0.0 ! X
0.5 0.0 0.0 ! X
0.5 0.5 0.0 ! M
GAMMA, G, GM, and a literal Γ are all rendered as \(\Gamma\). Other labels are passed through as LaTeX, so a subscripted point is written X_1. Cartesian line mode is not supported. Repeating a segment endpoint with a different label produces a discontinuous path, which is drawn with a break in the axis.
The file is read only as a text description of the k-path, and no part of it is specific to VASP. SIESTA and Quantum Espresso users can therefore write one by hand in the format above, describing the same path as their DFT band calculation, and use --auto-k-path without running VASP.
Note
--band-k-points is a starting value. If the requested number of points cannot be distributed over the path, it is incremented until it can, and the value actually used is printed and recorded in bands/ksum.input. This determines the number of blocks in bands/Gk.out.
Comparing with a DFT Band Structure¶
--compare-dft overlays the DFT bands on the DMFT spectral function. It works with --plot-plain, --plot-partial, and the spin-polarized options.
The DMFT run does not produce the files this needs. They come from a separate VASP band-structure calculation,
File |
Purpose |
Flag |
|---|---|---|
|
line-mode path, supplies the k-path and tick labels |
|
|
DFT eigenvalues along that path |
|
|
Fermi energy used to shift the DFT bands |
|
Each flag defaults to that file name in the current directory, so copying all three into DMFT works. Passing paths instead avoids the copy and, more usefully, avoids a name collision: charge self-consistent runs leave their own OUTCAR in the DMFT directory, and the DFT band run’s OUTCAR must not overwrite it.
If any of the three is missing, the run stops immediately. This matters because EIGENVAL and OUTCAR are not read until after the spectral function has been computed, so an unchecked typo would waste the whole calculation.
--compare-dft implies --auto-k-path. The path is always taken from the KPOINTS file, so that the DMFT and DFT bands share an axis. Combining it with --k-point-list or --k-point-names is rejected rather than silently ignored.
Important
Point --outcar at the self-consistent OUTCAR, meaning the one from the run that produced the CHGCAR reused by the ICHARG=11 calculation. That run sets the absolute energy zero of the eigenvalues in EIGENVAL, so only its Fermi energy puts the DFT bands on the same scale as the DMFT spectral function.
The OUTCAR written by the line-mode run itself reports a Fermi energy too, but it is computed from a one-dimensional path through the Brillouin zone rather than a proper sampling of it, and is not meaningful. Using it shifts the DFT bands rigidly, typically by several tenths of an eV.
The check is easy to make by eye. Uncorrelated bands well away from the Fermi level, the O \(p\) manifold in SrVO\(_3\), must lie on top of the corresponding spectral weight. If every DFT band is displaced by the same amount, the Fermi energy is wrong.
A typical sequence is a self-consistent run, a non-self-consistent run along the k-path with ICHARG=11 reusing the converged CHGCAR, and then post-processing,
# DFT band structure, in a separate directory.
# CHGCAR and OUTCAR come from the self-consistent run, so they share an energy zero.
mkdir -p DFT && cp CHGCAR INCAR POSCAR POTCAR DFT/
cp OUTCAR DFT/OUTCAR.scf
cd DFT
cp ../KPOINTS.nscf KPOINTS
sed -i -e 's/.*ICHARG.*/ICHARG=11/g' INCAR
sed -i -e 's/.*LWANNIER.*/LWANNIER=.FALSE./g' INCAR
mpirun -n $SLURM_NTASKS vasp_std > vasp.log 2> vasp.error
cd ..
# post-processing, reading the DFT files in place
cd DMFT
postDMFT.py bands --plot-plain --compare-dft \
--kpoints ../DFT/KPOINTS --eigenval ../DFT/EIGENVAL --outcar ../DFT/OUTCAR.scf \
--omega-points 1000 --band-k-points 1000 --normalize
Turning off LWANNIER for the band run matters. The Wannier projection is only meaningful on a uniform k-mesh, and the line-mode run would otherwise overwrite the Wannier files the DMFT run depends on.
Note
--compare-dft requires VASP-format EIGENVAL and OUTCAR files and is intended for VASP workflows. SIESTA and Quantum Espresso users can still use --auto-k-path, which needs only the KPOINTS file, and can plot their DFT bands independently against the spectral function read from bands/Gk.out, as described in Data Files for Custom Plots.
Projected Bands¶
--plot-partial projects the spectral function onto selected Wannier orbitals,
postDMFT.py bands --plot-partial --wannier-orbitals 2 3 5
--wannier-orbitals takes 1-based indices into the Wannier orbital ordering described below.
Wannier Orbital Order¶
One ordering is used throughout the post-processing outputs. It is the basis order of the Wannier Hamiltonian, and it is fixed by the projection block that DMFT.py writes into wannier90.win,
begin projections
V:d
O:p
end projections
The order is built up in three nested levels,
the entries of
atomnamesininput.toml, in the order listed there,within a species, its atoms in the order they appear in the structure file,
within an atom, the \(2l+1\) orbitals in Wannier90’s \(m_r\) order.
The projection block names only the species and the angular momentum, so the third level has to be read off Wannier90’s convention,
\(l\) |
\(m_r\) order |
|---|---|
|
\(s\) |
|
\(p_z\), \(p_x\), \(p_y\) |
|
\(d_{z^2}\), \(d_{xz}\), \(d_{yz}\), \(d_{x^2-y^2}\), \(d_{xy}\) |
|
\(f_{z^3}\), \(f_{xz^2}\), \(f_{yz^2}\), \(f_{z(x^2-y^2)}\), \(f_{xyz}\), \(f_{x(x^2-3y^2)}\), \(f_{y(3x^2-y^2)}\) |
For SrVO\(_3\), with atomnames = ["V", "O"] and orbs = ["d", "p"], this gives 14 Wannier functions,
Index |
Orbital |
|---|---|
1-5 |
V \(d_{z^2}\), \(d_{xz}\), \(d_{yz}\), \(d_{x^2-y^2}\), \(d_{xy}\) |
6-8 |
O(1) \(p_z\), \(p_x\), \(p_y\) |
9-11 |
O(2) \(p_z\), \(p_x\), \(p_y\) |
12-14 |
O(3) \(p_z\), \(p_x\), \(p_y\) |
so the \(t_{2g}\) manifold is --wannier-orbitals 2 3 5 and the \(e_g\) manifold is --wannier-orbitals 1 4.
Checking the order for your system¶
Do not take the convention on trust for a new structure. The Final State block of wannier90.wout lists the Wannier functions in exactly this order, with their centres and spreads,
Final State
WF centre and spread 1 ( 1.923260, 1.923260, 1.923260 ) 0.58374109
WF centre and spread 2 ( 1.923260, 1.923260, 1.923260 ) 0.65265213
WF centre and spread 3 ( 1.923260, 1.923260, 1.923260 ) 0.65265215
WF centre and spread 4 ( 1.923260, 1.923260, 1.923260 ) 0.58374188
WF centre and spread 5 ( 1.923260, 1.923260, 1.923260 ) 0.65265210
WF centre and spread 6 ( 1.923260, 1.923260, 0.000000 ) 0.69447337
...
The centres identify which atom each index belongs to, and the spreads identify the symmetry multiplets within an atom. Here functions 1-5 sit on the V site, and their spreads fall into a twofold group, 1 and 4 at 0.5837, and a threefold group, 2, 3 and 5 at 0.6527. That is the \(e_g\) and \(t_{2g}\) splitting, confirming the table above from the calculation itself rather than from the convention.
Which files use this ordering¶
Uses Wannier orbital order |
Uses |
|---|---|
Column pairs in |
Column pairs in |
|
Column pairs in |
|
Column pairs in |
|
|
The two orderings are unrelated and have different lengths. For SrVO\(_3\) the Wannier ordering has 14 entries, while cor_orb has two, the \(e_g\) and \(t_{2g}\) groups. Mixing them up is the most common source of wrong custom plots, so check the column count of a file before indexing into it.
The intermediate files bands/SigMoo_real.out and bands/SigMdc.out use a third layout, the Wannier ordering restricted to the correlated orbitals, which for SrVO\(_3\) gives five entries rather than 14 or 2. They are inputs to dmft_ksum_band and are not meant for plotting.
For SrVO\(_3\), orbitals 1-5 are the V \(d\) states and 6-14 the O \(p\) states. Wannier90 orders \(d\) orbitals as \(d_{z^2}\), \(d_{xz}\), \(d_{yz}\), \(d_{x^2-y^2}\), \(d_{xy}\), so --wannier-orbitals 2 3 5 selects the \(t_{2g}\) manifold and --wannier-orbitals 1 4 the \(e_g\) manifold. The latter is the default.
--normalize rescales the spectral intensity, with --value-limits setting the range. This is usually necessary when comparing plots across systems or against DFT bands.
The DMFT band structure is represented by the k-resolved spectral function,
where, the interacting Green’s function (\(G(k, i\omega_n)\)) is constructed from the DFT eigenvalues, the chemical potential, and the DMFT self-energy,
Here, \(\omega_n\) is a Matsubara frequency, \(\epsilon_k\) is the DFT eigenvalue, \(\mu\) is the chemical potential, and (\(\Sigma(i\omega_n)\)) is the self-energy. After analytic continuation, the real-axis spectral function is plotted by postDMFT.py bands.
The DMFT density of states \(A(\omega)\) is obtained by summing the spectral function over k-points,
and is plot with postDMFT.py dos.
Data Files for Custom Plots¶
Each post-processing step writes a plain-text data file that can be read directly with numpy.loadtxt or equivalent if you want to produce your own figures. In all three, the first column is the real frequency \(\omega\) in eV, measured relative to the chemical potential, so \(\omega = 0\) is the Fermi level.
ac/Sig.out¶
The analytically continued self-energy on the real axis, written by postDMFT.py ac.
# s_oo= [...]
# Vdc= [...]
omega Re Sig_1 Im Sig_1 Re Sig_2 Im Sig_2 ...
After the two header lines, each row is the frequency followed by a real and imaginary pair for every entry in cor_orb, in the order listed in input.toml. In the SrVO3 example cor_orb groups the \(d\) orbitals into \(e_g\) and \(t_{2g}\), so there are two pairs and five columns in total. This is the cor_orb group ordering, not the Wannier orbital ordering; see Wannier Orbital Order.
The header lines give the high-frequency limit \(\Sigma(\infty)\) (s_oo) and the double counting (Vdc) for the same components. Only the frequency-dependent part is tabulated, so the self-energy entering the Green’s function is \(\Sigma(\omega) + \Sigma(\infty) - V_{dc}\).
Use this file for scattering rates from \(-\mathrm{Im}\,\Sigma(\omega)\), or for mass enhancement from the slope of \(\mathrm{Re}\,\Sigma(\omega)\) near \(\omega = 0\).
dos/G_loc.out¶
The local Green’s function on the real axis, written by postDMFT.py dos.
omega Re G_1 Im G_1 Re G_2 Im G_2 ...
There is one real and imaginary pair per Wannier orbital, in the ordering given in Wannier Orbital Order, which is the same ordering used by --wannier-orbitals. The number of pairs equals the size of the Wannier Hamiltonian. For SrVO3 this is 14 pairs, the five V \(d\) orbitals followed by the nine O \(p\) orbitals.
The projected density of states for orbital \(i\) is,
in states/eV/cell. Summing the relevant orbital columns gives a projected or total DOS. This is exactly what postDMFT.py dos does to produce dos/DMFT-PDOS.png.
The number of rows is set by --omega-points.
bands/Gk.out¶
The k-resolved Green’s function, written by postDMFT.py bands. The file is arranged in blocks, one per k-point,
k= kx ky kz
omega Re G Im G
omega Re G Im G
...
The k-point is in fractional coordinates. The number of frequency rows per block is set by --omega-points and the number of blocks by --band-k-points. Both values are also recorded on the first two lines of bands/ksum.input.
There are three columns whatever the size of the system, because \(G\) here is the trace over the Wannier basis rather than an orbital-resolved quantity. The orb= blocks written by --plot-partial are the diagonal elements that sum to it.
The spectral function plotted as the DMFT band structure is,
Warning
\(G(k, \omega)\) is evaluated with a fixed numerical broadening of \(\eta = 0.03\) eV, hard-coded in dmft_ksum_band and not exposed as an option. Peak widths measured from Gk.out therefore include this broadening and are not scattering rates. Take those from \(-\mathrm{Im}\,\Sigma(\omega)\) in ac/Sig.out instead.
To place the blocks on a band-structure axis, use bands/klist.dat, which has one row per k-point containing the cumulative distance along the k-path, the three fractional coordinates, and a label on high-symmetry points. Plotting \(A(k, \omega)\) against the first column of klist.dat and \(\omega\) reproduces the --plot-plain figure.
Note
--plot-partial runs dmft_ksum_partial_band rather than dmft_ksum_band and overwrites Gk.out with an orbital-resolved variant, where each k-point block is subdivided by Wannier orbital with an additional orb= header line. The orb= blocks follow Wannier Orbital Order, so every k-point block holds one sub-block per Wannier orbital regardless of which ones --wannier-orbitals selected. Copy Gk.out elsewhere if you need to keep both forms.