# Electronic Configuration¶

The next few keys can be used to specify the electronic configuration. If you don’t specify any such keys, certain defaults will apply. In principle, the program will (by default) attempt to find the lowest-energy spin-restricted (one-determinant) state. If SCF convergence is problematic the program may wind up at an excited state, by which (in this context) we mean a one-determinant state with a higher energy than some other one-determinant state with the same net spin polarization. In worse cases the program may fail to converge to any state at all. It is good practice to *always* verify which configuration you actually have computed.

When you specify a particular configuration and/or net charge and/or net spin-polarization of the system, the program will try to compute accordingly, even if the data have no physical or chemical meaning. The program has no knowledge about the existence of materials and will simply try to carry out what you tell it to do.

## Charge and Spin¶

### Spin: restricted vs. unrestricted¶

```
UNRESTRICTED
```

Specifies that spin-\(\alpha\) and spin-\(\beta\) MOs may be spatially different and may have different occupation numbers. The default (absence of the key) is spin-restricted. The key has no argument. In the case of Spin-Orbit coupling it means that Kramer’s symmetry does not have to be satisfied, in which case the key `UNRESTRICTED`

should be used in combination with the key `NONCOLLINEAR`

or `COLLINEAR`

.

The unrestricted mode roughly doubles the computational effort. The actual numbers of spin-\(\alpha\) and spin-\(\beta\) electrons respectively are controlled by the keys CHARGE and OCCUPATIONS. Not e carefully, that using *only* the keyword unrestricted, without either Charge or Occupations (or both) would not result in any spin polarization. This implies that you would effectively perform a spin-restricted calculation, but with increased computational effort. Therefore, the program will check that in an unrestricted calculation at least one of the keys Charge and Occupations is applied.

The unrestricted feature is equivalent with, in *ab-initio* terminology, (Spin-)Unrestricted-Hartree-Fock (UHF); the N-particle wave function is a single determinant and not necessarily an eigenfunction of the spin operator S^{2} .

A *restricted* calculation implies that the (spatial) orbitals *and* the occupation numbers are identical for spin-\(\alpha\) and spin-\(\beta\).

The Fock operator, both in an unrestricted and in a restricted run, commutes with the spin operator Sz, but not (unless accidentally) with S^{2} . The obtained one-determinant wave function may for instance be a mixture of a singlet and a triplet state.

In an unrestricted calculation the expectation value of S^{2} is now computed in ADF (note 29 in [98]). The implementation of an evaluation of S^{2} is not quite trivial. DFT is essentially a one-particle formalism, so the S-operator for the n-particle system has to be written out in single-particle operators [99]. The equations used in ADF to calculate the expectation value of S^{2} can be found in Szabo and Ostlund [100]. Note that the so called exact value (S_{exact} )^{2} , which is printed in the ADF output, is defined as (S_{exact} )^{2} = (|N_{a} - N_{b} |/2)(|N_{a} - N_{b} |/2+1), where N_{a} and N_{b} are the number of spin-\(\alpha\) and spin-\(\beta\) electrons, respectively. The expectation value of S^{2} is not calculated in a Spin-Orbit coupled calculation.

Molecules that have been calculated using the unrestricted formalism cannot be employed as fragments. ADF will abort when you attach the TAPE21 result file from an unrestricted calculation as a fragment file.

A fair approximation to a computation with unrestricted fragments can be achieved with the key FRAGOCCUPATIONS. See also the examples Example: Spin-unrestricted Fragments: H2, Example: Bond Energy analysis meta-GGA, (meta-)hybrids: Zn2, Cr2, CrH and Example: Bond Energy analysis open-shell fragments: PCCP.

### Unrestricted and Spin-Orbit Coupling¶

In the case of Spin-Orbit coupling there are two ways to do spin-polarized calculations, either using the collinear approximation or the noncollinear approximation [101, 102]. Using the unrestricted feature in order to assign different numbers of electrons to a and b spin, respectively, cannot be applied as such, if one includes Spin-Orbit coupling, since the electrons are not directly associated with spin-\(\alpha\) and spin-\(\beta\). For the collinear and noncollinear approximation one should use `Symmetry NOSYM`

(see Symmetry Key), and each level can allocate 1 electron. Note that with the key `CHARGE`

one should only specify one value, namely the total charge. One should not specify the spin-polarization.

```
COLLINEAR
```

This key is only relevant in the case of Spin-Orbit coupling. The key has no argument. See also the key `NONCOLLINEAR`

.

In the collinear approximation in each point in space the spin-polarization has the same direction (default is in the direction of the z-axis). Kramer’s symmetry does not have to be satisfied. Symmetry used in the calculation should be NOSYM. The default direction of the spin-polarization can be overruled using the key `SOUX`

(this key has no argument) for spin-polarization only in the direction of the x-axis, and the key `SOUY`

(this key has no argument) for spin-polarization only in the direction of the y-axis. Both keys `SOUX`

and `SOUY`

are only relevant in the case of Spin-Orbit coupling in combination with the key `COLLINEAR`

.

```
NONCOLLINEAR
```

This key is only relevant in the case of Spin-Orbit coupling. The key has no argument. See also the key `COLLINEAR`

.

In the noncollinear approximation in each point in space the spin-polarization can have a different direction. Kramer’s symmetry does not have to be satisfied. Symmetry used in the calculation should be NOSYM.

### Net Charge and Spin polarization¶

The net charge of the molecule and the net spin polarization can be controlled with the key CHARGE:

```
CHARGE {NetQ {ab}}
```

`NetQ`

- The net total charge of the molecule
`ab`

- The net total spin polarization: the number of spin-\(\alpha\) electrons in excess of spin-\(\beta\) electrons. Specification is only meaningful in a spin-unrestricted calculation. However, specification is not meaningful in an unrestricted Spin-Orbit coupled calculation using the (non-)collinear approximation.

If the key is used, the first value in the argument is assigned to netQ, the net total charge, and the second to ab. If the key is not used at all, default values apply. The default for the net total charge is the *sum of fragment charges: not necessarily neutral!!* The fragment charges are the net total charges that were used in the fragment runs; this information is stored in the fragment files.

The default spin polarization is zero.

An unrestricted calculation with ab=0 (for instance by not specifying the spin polarization at all) is, in the case one does spin break the spin symmetry, in fact a restricted run: it should give exactly the same as the restricted calculation, but it will use more CPU time. If one does break the spin symmetry, for example with the key `MODIFYSTARTPOTENTIAL`

or the `SPINFLIP`

option in the key RESTART, the solution may also be a broken spin symmetry solution. For example one may want to start a calculation in broken symmetry with spin-\(\alpha\) density on one fragment and spin-\(\beta\) density on another, e.g. in a spin-unrestricted calculation of H_{2} at large separation.

## Orbital occupations: electronic configuration, excited states¶

With the key `OCCUPATIONS`

you can specify in detail the assignment of electrons to MOs

```
OCCUPATIONS Options
{irrep orbitalnumbers
irrep orbitalnumbers
...
End }
```

`Occupations`

- is a
*general*key: it has an argument or a data block. If you want to use both, the continuation code`&`

must be appended at the end of the argument.

### Aufbau, smearing, freezing¶

```
OCCUPATIONS Options
```

`Options`

May contain IntegerAufbau, Keeporbitals, Smearq, Freeze, or Steep:

`IntegerAufbau`

- Electrons are assigned to MOs according to the Aufbau principle, trying to use integer occupations, also in case of degeneracy at the Fermi level. ADF normally may use fractional occupation numbers in that case. Note that for multi-dimensional irreps, using the subkey IntegerAufbau may stil not prevent fractional occupation numers to be used.
`Keeporbitals=NKeep`

Until SCF cycle Nkeep electrons are assigned to MOs according to the Aufbau principle, using at each cycle the then current orbital energies of the MOs. Thereafter the KeepOrbitals feature is applied. As soon as this is activated the program will on successive SCF cycles assign electrons to the MOs that maximally resemble - in spatial form - those that were occupied in a ‘reference cycle number’. The default for Nkeep is 20, except:

- When orbital occupations for MOs are specified explicitly in the data block of the occupations key, these apply throughout.
- In a Create run fixed occupations are derived from a database in the program.
- When electron smearing is explicitly turned on by the user (see the Smearq option below) Nkeep is by default 1,000,000 so the program will ‘never’ compare the spatial forms of MOs to determine the occupation numbers. The ‘reference cycle number’ is by default the previous cycle, which will suppress jumps in the spatial occupations during the SCF development while at the other hand allowing the system to let the more-or-less-frozen configuration relax to self-consistency.

`Freeze`

- Occurrence of this word in the option list specifies that the ‘reference cycle number’ will be the cycle number on which the KeepOrbitals feature is activated: during all subsequent SCF cycles the program will assign electrons to MOs that resemble the MOs of that specific SCF cycle. This may be used when the MOs of that cycle are already reasonably close to the final ones, and it will suppress unwanted step-by-step charge-transfers from occupied to empty orbitals that are very close in energy. By default this option is not active.
`Smearq=Smear1[,Smear2,Smear3,...,Smear10]`

- Smear
*N*is half the energy width (in Hartree) over which electrons are smeared out over orbitals that lie around the fermi level and that are close in energy. Smearing is a trick that may help when the SCF has problems converging. One should be well aware that the physical meaning of a result obtained with smeared occupations is unclear (to express it mildly). It may be useful to get over a hurdle in a geometry optimization. By default the*initial*smear parameter is zero (i.e.: smearing is not applied). It is turned on automatically by the program when SCF convergence is found to be problematic, but only in an optimization-type application (simple optimization, linear transit, transition state) when the geometry is not yet converged. You can rigorously prohibit any smearing by specifying it explicitly with value zero. More generally: specifying the smear parameter makes the program to apply it always, but always with the input-specified value. When a comma-delimited list of values is specified, after SCF has converged, the next value from the list is picked and the SCF is continued. This way one can specify a list of gradually decreasing values to get sort of annealing effect. NOTE: No spaces are allowed when specifying a list of values for Smearq. `Steep=Lambda[,Nmax]`

- The occupation number for each orbitals are updated according to steepest-descent method (Ref: F. W. Averill and G. S. Painter, Phys. Rev. B
**46**, 2498 (1992)). During an SCF cycle, the occupation number for each new orbital is initially determined by decomposing the old charge density with new orbitals. Then, the occupation numbers are modified so that the total energy of the system will decrease. The Lambda parameter gives the coefficient for the charge transfer in 1/au unit. The second parameter, Nmax, is an additional limit for the amount of the charge transfer. Nmax would be useful for early steps of cycle when the Lambda parameter gives too large charge transfer. Too small Nmax results in irregular behavior in SCF convergence. In the case of difficult SCF convergence, you should make mixing and Lambda smaller. From our experience, Nmax=0.1 or 0.2 is usually OK. This method should be used with turning off DIIS method (DIIS N=0), and the choice of the mixing parameter in SCF cycle is also important. This option is especially useful for systems with many quasi-degenerate orbitals around Fermi level. For instance, cluster models of surface systems usually suffer from dangling bonds and should be converged with this method. Note though that slow convergence is an intrinsic feature of this method so one should specify a large limit for the number of SCF cycles, say 500 or even 1000, depending on the cluster size.

Notes about the occupations options:

- When occupation numbers are explicitly defined via the block form of the
`OCCUPATIONS`

keyword (see next section), the Smearq option cannot be used. - The aufbau principle does not determine or adjust the distribution of electrons over spin-\(\alpha\) versus spin-\(\beta\) in an unrestricted calculation. This aspect is controlled by the key
`CHARGE`

and by any explicit occupations in the data block of occupations. - When occupation numbers are not specified and no Smearing is specified either, the program will turn on smearing automatically when the SCF has serious convergence problems, in an attempt to overcome those problems, but only in a geometry optimization (including transition state, linear transit, etc.). If such happens the program restores the original situation (no smearing) at the start of each new SCF. In automatic smearing the smear parameter is initiated at 0.01 Hartree and may be varied (by the program) between 0.001 and 0.1 Hartree. The automatic use of smearing by the program can be prohibited by explicitly setting the smear option with value zero (Smearq=0).
- Smearing cannot be used in combination with the keeporbitals option. This option therefore also turns of
*automatic*smearing in troublesome SCF ‘s during an optimization.

### Explicit occupation numbers¶

```
OCCUPATIONS
irrep orbitalnumbers
irrep orbitalnumbers
...
End
```

`irrep`

- The name of one of the irreducible representations (not a subspecies) of the point group of the system. See the Symmetry for the irrep names as they are used in ADF.
`orbitalnumbers`

A series of one or more numbers: the occupation numbers for one-electron

*valence*orbitals in that irrep. The orbitals are ordered according to their energy eigenvalue; higher states than those listed get an occupation number zero.For degenerate representations such as the 2-dimensional E-representations or the 3-dimensional T-representations, you must give the

*total*occupation, i.e. the sum over the partner representations; ADF assigns each partner an occupation equal to the appropriate fraction of what appears here.In an unrestricted calculation, two sequences of numbers must be specified for each irrep; the sequences are separated by a double slash (//). The first set of numbers is assigned to the spin-\(\alpha\) orbitals, the second set to the spin-\(\beta\) orbitals. Example unrestricted calculation in symmetry NOSYM with two unpaired electrons:

OCCUPATIONS A 28 // 26 End CHARGE 0 2 SYMMETRY NOSYM

Note that this is not meaningful in an unrestricted Spin-Orbit coupled calculation using the (non-)collinear approximation, where one should use one sequence of occupation numbers for each irrep.

Notes about the occupations data block:

When specifying electron configurations, all valence electrons in the calculation must be explicitly assigned to MOs and the block form of the OCCUPATIONS keyword must be used. In this context the concept

*valence electrons*and hence*valence orbitals*is not necessarily identical to what you may normally assume to be the valence space of an atom or molecule. The meaning of*valence*is here strictly defined as whatever electrons are outside the frozen core. It depends therefore on the level of frozen core approximation applied in the calculation. This traces back to the Create runs in which the basic atoms were generated that are now used to build the molecule.When for some irrep there is a rather long list of occupation numbers, corresponding to * consecutive fully occupied* states, you can combine these numbers and enter their sum instead: ADF knows the maximum occupation for an irrep, and when you put a larger number the program will split it up. For instance, if you give for the

*p*-representation (in a single atom calculation):P 17 3

ADF will interpret this as:

P 6 6 5 3

i.e. the occupation number 17 is interpreted as denoting two fully occupied p-shells and the remaining five electrons in the next higher shell. This example also illustrates how to specify an excited state: here we have defined a hole in the third p-shell.

Fractional occupation numbers in input are allowed. For a discussion of the interpretation of fractional occupation numbers see [103]. The program even allows you (technically) to use a non-integer total number of electrons, whatever the physical meaning of such a calculation is.

The data block of occupations is not parsed (see the section Interpretation of Input). The program does not replace expressions by their value and it does not recognize constants or functions defined with the define key.

In a numerical frequencies run (without the Symm argument) the symmetry used internally in the program is NOSYM, irrespective of any Schönfliess symbol in the input file. As a consequence the program will recognize only the A representation (the only irrep in nosym), but not the representations belonging to the input point group symmetry. (The symmetry in the equilibrium geometry, defined by the input Schönfliess symbol, is used to enhance efficiency and stability in the construction of the matrix of Force constants).

### CHARGE vs. OCCUPATIONS¶

The contents of the data block of occupations, if used, defines the total number of valence electrons and hence the net total charge. In an unrestricted run it also defines the net spin polarization. If the key `CHARGE`

is also used, the program will check that both specifications are consistent.

We strongly recommend to employ this and always specify the net total charge and spin polarization with charge whenever explicit occupation numbers are supplied with occupations, to that the program will check that your occupation numbers result in the total charge and spin polarization that you have in mind.

### Create mode¶

In Create mode occupation numbers are predefined (see Appendix Elements of the Periodic Table), and these are applied unless you specify occupations in input yourself. Conceivably this may result in a non-aufbau configuration. In Create mode the program always operates as if occupations were set in input.

## Frozen core approximation¶

**Frozen core vs. pseudopotentials**

Pseudopotentials are not supported. The frozen core approximation is automatic in a normal (Fragment mode) calculation and is defined by the basic atomic fragments. The data file used in the Create run specifies the frozen core for the atom, which is then used in all molecules that incorporate that atomic fragment.

**Core Potentials**

In the standard approach the Coulomb potential and the charge density due to the atomic frozen core are computed from the frozen one-electron orbitals. ADF stores the computed core density and core potential for each atom type in the molecule on a file TAPE12. Alternatively, you may attach a file with (core) potentials and densities. The file must have the same structure as the standard TAPE12. It should contain one or more sections, each with the core information for one type of atom. With the key COREPOTENTIALS you specify the core file and (optionally) which sections pertain to the distinct atom types in the molecule. It is a general key that can be used as a simple key or as a block key.

Simple key:

```
COREPOTENTIALS corefile
```

Block key:

```
COREPOTENTIALS corefile &
atomtype index
atomtype index
end
```

`corefile`

- The file with core potentials and charge densities. The name may contain a path.
`atomtype`

- One of the atom type names as defined by atoms.
`index`

- Points to the core section on the attached file that applies to the atom type. Different atom types may use the same section. A non-positive index tells the program that the atoms of that type don’t have a frozen core. If the information on the corresponding fragment file (or data file in Create mode) indicates the contrary the program will abort with an error message.

If the key is used as a simple key (specifying only the core file) the sections on the file are associated with the atom types in order: the first section is used for the first atom type, et cetera. This is overruled by applying the block form. However, since the key *must* have the core file as argument, the block form requires that you apply the continuation symbol: an ampersand (), separated from the core file name by at least one blank.

If you omit an atom type from the data block it gets a zero index (no core).

The attached file may contain more sections than used in the calculation, and the indices specified in the data block don’t have to be in ascending order, consecutive, or cover a specific interval.

When a file with non-standard (e.g. relativistic) cores is attached and used in the calculation of an atom or molecule, and the result is used as fragment in a subsequent calculation, you should attach and use the same core potentials again. Otherwise, the program will internally compute the standard core potentials and hence implicitly employ another fragment than you may think, i.e. a fragment with other properties. ADF will not check anything in this respect and corepotentials should therefore be handled with great care.

The primary application of the corepotentials option is to include (scalar) relativistic corrections in the (frozen core part of the) Fock operator. The relativistic core potentials can be computed with the auxiliary program dirac (see the RELATIVISTIC keyword).

## Spin-polarized start-up potential¶

The Coulomb and XC (exchange + correlation) potentials are computed from the fit approximation of the charge density (see Density fitting).

The fit coefficients of this approximation for the first SCF cycle, needed to compute the first Fock matrix, are read from the fragment files: the start-up density is chosen as a sum-of-fragment-densities (fit approximations) and this combined density defines the initial potential.

In the SCF restart run the fit coefficients may be read from the attached TAPE21 file, see the key RESTART.

### Spin-flip method for broken symmetries¶

Starting from ADF2009.01 it is possible to exchange alpha and beta electrons for selected atoms when performing a restart from a previous spin-unrestricted calculation.

In many cases, one wishes to perform a calculation of a low-spin complex where spin-density is positive on some atoms and negative on the others. It is usually very difficult to achieve SCF convergence if one starts from scratch. Sometimes, the MODIFYSTARTPOTENTIAL feature (see next section) helps with this problem but sometimes it does not. A more robust way is to first perform a high-spin calculation and then modify the resulting t21 file by “flipping” the spin on some atoms. This file then can be used to restart a subsequent low-spin calculation.

Such a “flipping” can now be performed during restart by specifying a SPINFLIP keyword in the RESTART input block as shown below:

```
RESTART high-spin.t21 &
! SpinFlip keyword is followed by atom numbers for
! which the flipping will be performed
SPINFLIP 1
END
```

An example demonstrating the feature may be found in the examples Broken spin-symmetry: Fe4S4.

### Modify the starting potential¶

In some applications you may want to modify the initial fit coefficients (from the restart file or the fragment files), see also the previous section. This is achieved with the key MODIFYSTARTPOTENTIAL. It allows you to scale them in some way so as to represent user-chosen amounts of spin-\(\alpha\) and spin-\(\beta\) fit density on some or all of the fragments. This will adjust the spin-\(\alpha\) and spin-\(\beta\) initial potentials.

This option applies only to *unrestricted* calculations of course. It may be used to help the program find a particular state. This might, for instance, be hard to find otherwise due to the a-b symmetry in the start-up situation. It may also be useful to speed up the SCF convergence in case you know what the final distribution of spin-\(\alpha\) and spin-\(\beta\) density over the molecule will approximately be.

```
MODIFYSTARTPOTENTIAL {specification}
{ frag alfa // beta
frag alfa // beta
...
end }
```

`ModifyStartPotential`

- A
*general*key: it has an argument*or*a data block. `specification`

- Must be
*two numbers*, ASPIN and BSPIN, if provided at all. They specify the (relative) amounts of spin-\(\alpha\) and spin-\(\beta\) fit density to define the spin-dependent potential at the first SCF cycle. The coefficients retrieved from the fragment files (or from the restart file in case of a SCF restart) are scaled accordingly. This will not affect the*total*amount of fit density: the absolute values of ASPIN and BSPIN play no role, only their ratio. In case of a restart run the restart file must have been generated in a*restricted*calculation, while the continuation run must be an*unrestricted*one.

If no argument is given a data block must be supplied with records frag alfa // beta. This is very much similar to the main option with ASPIN and BSPIN: you specify ASPIN and BSPIN now separately for each fragment. This involves somewhat more input but increases the possibilities to tune the initial potential. Again this can be applied only in an unrestricted calculation. It cannot be used in a restart: the affected fit coefficients are those from the fragment files, while in an SCF restart run these are ignored and replaced by the coefficients on the TAPE21 restart file.

Each line specifies a frag with its corresponding ASPIN and BSPIN fit partitioning. If frag is the name of a fragment *type*, the specified ASPIN-BSPIN is applied to all individual fragments of that type. Alternatively an *individual* fragment can be specified, using the format fragtype/n, where *n* is an index between one and the total number of fragments of that type. In such a case the ASPIN-BSPIN data applies only to that particular fragment while different values may be supplied for the other fragments of the same type.

It is allowed to specify for certain fragment types individual fragments and for other fragment types only the type. Duplicate specifications are not allowed; an individual fragment must not be specified if its fragment type is also specified as a whole. If the data block form is used, only the fit coefficients of the referenced fragments are affected. For the not-referenced fragments the fit densities are used as they are defined on the corresponding fragment files.

The SCF convergence of a spin-unrestricted calculation usually improves when you start with potentials that correspond to the correct ratio of spin-\(\alpha\) and spin-\(\beta\) electrons. By default ASPIN=BSPIN=0.5, as implied by the spin-restricted start density of the fragments or restricted molecule.

The total amount of fit density used on the first iteration is defined by the sum-of-fragment densities (or the density on the restart file). This may be different from the total nr. of electrons in the actual calculation. On the second SCF cycle the fit density will internally be normalized so as to represent the correct number of electrons.

The block-form of the key makes the start up of broken symmetry calculations easy. For example one may want to start a calculation in broken symmetry with spin-\(\alpha\) density on one fragment and spin-\(\beta\) density on another, e.g. in a spin-unrestricted calculation of H_{2} at large separation. It is particularly useful for larger systems, e.g. for magnetic coupling between spin-polarized magnetic centers, as in Fe-S complexes [111]: start with oppositely polarized Fe centers, but with, for instance, the remaining bridge and terminal ligands unpolarized. See also the N2+ sample run in the examples.

## Unrestricted fragments¶

The fragments from which the molecule is built must be spin-restricted, that is: the fragment files must be result files of spin-restricted calculations. For purposes of analysis, however, it may be desirable in some applications to build your molecule from *un*restricted fragments. This can be simulated as follows.

You tell ADF that you want to *treat* the fragments as if they were unrestricted; this causes the program to duplicate the one-electron orbitals of the fragment: one set for spin-\(\alpha\) and one set for spin-\(\beta\). You can then specify occupation numbers for these spin-unrestricted fragments, and occupy spin-\(\alpha\) orbitals differently from spin-\(\beta\) orbitals.

Of course, the unrestricted fragments that you use in this way, are not self-consistent: different numbers of spin-\(\alpha\) and spin-\(\beta\) electrons usually result in different spatial orbitals and different energy eigenvalues for spin-\(\alpha\) and spin-\(\beta\) when you go to self-consistency, while here you have spatially identical fragment orbitals. Nevertheless it is often a fair approximation which gives you a considerable extension of analysis possibilities.

In ADF2012 for hybrids, metaGGA’s, and metahybrids the calculation of the Pauli repulsion term is implemented if one is simulating an unrestricted fragment with the key FRAGOCCUPATIONS.

```
FRAGOCCUPATIONS
fragtype
irrep spin-a // spin-b
irrep spin-a // spin-b
...
subend
fragtype
irrep spin-a // spin-b
...
subend
end
```

`fragtype`

- One of the fragment types and functions as a (block type) subkey. The data block for the subkey ends with the standard end code for block type subkeys (subend).
`irrep`

- One of the irreducible representations (irreps) for the point group symmetry that was used in the computation of that fragment.
`spin-a // spin-b`

- Two sequences of occupation numbers, which will be applied to the spin-\(\alpha\) and spin-\(\beta\) versions of the Fragment Orbitals. The sequences must be separated by a double slash (//). See for comparison the specification of occupation numbers for the overall system (key CHARGE).

The sum of spin-\(\alpha\) and spin-\(\beta\) occupations must, for each fragment orbital in each irrep separately, be equal to the total (restricted) occupation of that orbital as it is stored on the fragment file. In other words: you can only change the distribution over spin-\(\alpha\) and spin-\(\beta\) electrons within one orbital.

(Without this restriction the spatial distribution of the total (sum over spins) fragment charge density would be changed, leading to an incorrect bonding energy analysis after the calculation).

The data block of FRAGOCCUPATIONS is not parsed for expressions and constants or functions defined under define. Any such items will not be recognized and not be replaced by their values.

Be aware that in more-dimensional irreps (e, t) the number of electrons in a fully occupied orbital is input as the dimension of the irrep times the one-electron orbital occupation. Compare the key OCCUPATIONS.

For irreps that are not mentioned in this input block, and hence for all irreps of fragment(type)s that are not mentioned at all, the spin-\(\alpha\) and spin-\(\beta\) occupations will be set equal, which is of course what they in fact are on the (restricted) fragment file.

For an example of applying this option see [112].

## Remove Fragment Orbitals¶

By default all fragment orbitals (the MOs of the fragment computation), which are stored on the fragment file, are used as basis functions for the overall molecule. You can remove one or more of these fragment orbitals from the basis set of the molecule. This may be useful for special analyzes, for instance to study the effect of deleting all virtual MOs of a particular fragment (CSOV analysis, Constrained Space Orbital Variation). It may also enhance the efficiency since you effectively reduce the size of the basis set, but you should be aware of the potential effects on the results.

```
REMOVEFRAGORBITALS
fragtype
subspecies nremove
subspecies nremove
...
subend
fragtype
subspecies nremove
...
subend
...
(etc.)
...
end
```

`fragtype`

- One of the fragment types in the system. Any subset of the available fragment types can be used here as subkey. The subkeys are block type keys; their data blocks end subend.
`subspecies`

- One of the subspecies of the irreducible representations of the point group symmetry that was used in the calculation of the fragment itself. This requires of course that one knows the symmetry that has been used for the fragment calculation.
`nremove`

- The number of fragment orbitals of the pertaining representation that will not be used as basis functions for the overall system. The
*highest*(in energy eigenvalue) nremove orbitals are discarded. You must not remove*occupied*fragment orbitals.

By default (omission of the key) all fragment orbitals are used in the basis set for the system.

**Important Note**

It is imperative that any removal of fragment orbitals will not break the symmetry of the molecule. This consideration is relevant when for instance two different subspecies of a fragment irrep contribute to different partner subspecies in one of the irreps of the molecule. In such a case, when one removes an orbital in such a fragment subspecies, its partner orbital should also be removed. If this is violated an error may occur or the results will simply be wrong. Quite likely, the program will detect the error, but this may occur only in the final (analysis) stage of the calculation so that a lot of CPU time may have been wasted.

Example: consider a single-atom fragment, computed in atom symmetry, used as fragment in a c(lin) molecule and assume that the p:x and p:y fragment orbitals contribute to respectively the pi:x and pi:y subspecies of the molecule. Then, when you remove one or more p:x fragment orbitals, you should also remove the same number of p:y fragment orbitals. Practical cases may be more complicated and whenever you use this key, make sure that you’ve fully analyzed and understood how the fragment irreps combine into the molecular symmetry representations. Hint: run the molecule, without removing any fragment orbitals, and stop at an early stage after the program has computed and printed the build-up of the molecular SFOs from the fragment orbitals. To control early aborts via input, use the key STOPAFTER.

## CDFT: Constrained Density Functional Theory¶

CDFT is a tool for carrying out DFT calculations in the presence of a constraint. The nature of the constraint is general in theory, however, in the current implementation the user can constrain the CHARGEs or the SPINs of a set of moieties (as identified by sets of atoms) to be a specific real number given in input.
Note that the use of CDFT as implemented in ADF is an **expert option**, and it is a **work in progress**.
Implemented in ADF by M. Pavanello and P. Ramos [410], based on the method described in Ref. [409].
At the moment SYMMETRY NOSYM and an all electron basis set are required.

The simplest way to run CDFT is using the following keyword combination

```
CDFT
NCONSTRAINTS 1
NATOMSPERSET N
THEATOMS atom1 atom2 ... atomN
CONSTRAINTS charge
END
```

All the CDFT block key options are

```
CDFT
NCONSTRAINTS Nc
NATOMSPERSET n1 n2 n3 ... n_Nc
CONSTRAINTS charge_1 charge_2 charge_Nc
{ALLATOMS | THEATOMS atom1_1 atom2_1 ... atomn_1 atom1_2 ... atomn_Nc}
{INITIALMULTIPLIERS lambda_1 lambda_2 ... lambda_Nc}
{POPTYPE population_analysis_type}
{ONLYCHARGE, CHARGEANDSPIN, EXCITEDCDFT}
{DONOTOPTIMIZE}
{ANALYTICALHESSIAN N_scf}
{THRESHOLD threshold}
{STEPSIZE stepsize}
{MAXITER maxiter}
{PRINT print_level}
END
```

`NCONSTRAINTS Nc`

- This specifies the number of sets of atoms to be considered. For example, if the user wishes to constrain a positive charge on one part of the system, and a negative charge on another part, NCONSTRAINTS should be set to two. There is no limit on the number of constraints. However, SCF convergence becomes an inssue with more than 2 constraints. Default: 1. Note: NCONSTRAINTS>1 is untested.
`NATOMSPERSET n1 n2 n3 ... n_Nc`

- The number of atoms in each moiety (set). No default value.
`CONSTRAINTS charge_1 charge_2 charge_Nc`

- The values of the constraints. If CHARGEANDSPIN, constraints to the alpha and beta electrons need to be specified sequentially. One more electron => CONSTRAINTS -1.0. One less electron => CONSTRAINTS 1.0. If the CDFT type is EXCITEDCDFT, CONSTRAINTS=1.0 is recommended. Other values are technically possible but have not been tested yet. No default value.
`ALLATOMS | THEATOMS atom1_1 atom2_1 ... atomn_1 atom1_2 ... atomn_Nc`

- The atom numbers of the moieties in the input geometry order. If NCONSTRAINTS is larger than 1, the sets of atoms are entered as a single list. If ALLATOMS is specified, then THEATOMS is overridden and all the atoms in the active fragment are included in the set. If ALLATOMS is specified then NCONSTRAINTS=1. No default value.
`INITIALMULTIPLIERS lambda_1 lambda_2 ... lambda_Nc`

- If available, a guess for the Lagrange multipliers can be entered. Default: 0.0.
`POPTYPE population_analysis_type`

The population analysis chosen for determining the constraint. Default: YUKAWALIKE, as is the only one compatible with an FDE calculation (at the moment). Available options are:

- YUKAWALIKE (atom-centered Yukawa potentials),
- FUZZYVORONOIBECKE (Becke population analysis), and
- FUZZYVORONOIFERMI (atom-centered polynomial decay)

`ONLYCHARGE, CHARGEANDSPIN, EXCITEDCDFT`

The type of CDFT calculation. Default: ONLYCHARGE

- ONLYCHARGE will constrain only the charge, letting spin relax (and potentially delocalize)
- CHARGEANDSPIN will constrain both the charge and the spin
- EXCITEDCDFT will generate an excited state with CONSTRAINTS number of ALPHA electrons constrained to occupy the virtual space of a ground state reference calculation. EXCITEDCDFT has never been tested in closed-shell systems.

`DONOTOPTIMIZE`

- If this is specified, the multipliers chosen in INITIALMULTIPLIERS will not be optimized and will be constant throughout the entire SCF procedure. Default: not invoked.
`ANALYTICALHESSIAN N_scf`

- This will calculate the analytical derivative of the energy w.r.t. the Lagrange multiplier up to the specified SCF iteration. This key is not recommended due to the high computational cost that comes with it. The calculation is equivalent to a ground state Hessian, and it is carried out with the full sum-over-states formula. Default: not invoked.
`THRESHOLD threshold`

- The threshold for convergence of the CDFT constraints. The tighter the SCF convergence criteria, the tighter the THRESHOLD should be. Default: 1.0e-10.
`STEPSIZE stepsize`

- The amount of the Lagrange multiplier’s step taken in each CDFT iteration. Default: 0.2.
`MAXITER maxiter`

- Maximum number of CDFT iterations. CDFT carries out a loop nested inside the SCF cycle. Default: 200.
`PRINT print_level`

Print level and debugging. Default: LOW Available options:

- LOW, minimal printing and no debug checks,
- MEDIUM, intermediate print level, no debug checks,
- HIGH, massive printing and debug checks enabled (slow)