User Tools

Site Tools


howto:cdft

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
howto:cdft [2018/11/02 12:45] – [Available constraints] nholmberhowto:cdft [2018/11/02 12:51] – [Example: Configuration interaction calculations with CDFT (CDFT-CI): The case of $\mathrm{H}_2^+$] nholmber
Line 157: Line 157:
   - Constraint weight function specific settings (Becke/Hirshfeld subsections)    - Constraint weight function specific settings (Becke/Hirshfeld subsections) 
  
-In the above example, a Becke constraint is selected using the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT#TYPE_OF_CONSTRAINT|TYPE_OF_CONSTRAINT]]. The actual constraints are defined using the section [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP|ATOM_GROUP]]. Each repetition of this section defines a new constraint. The constraint atoms are selected with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#ATOMS|ATOMS]] and the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#COEFF|COEFF]] determines how the atoms are summed up to form the constraint. Usually all coefficients are set to +1, but mixing +1 and -1 coefficients would define the constraint as the difference between two groups of atoms. The keywords [[inp>FORCE_EVAL/DFT/QS/CDFT#TARGET|TARGET]] and [[inp>FORCE_EVAL/DFT/QS/CDFT#STRENGTH|STRENGTH]] define the constraint target values and the initial constraint strengths $\vec\lambda$, respectively. The constraint target value should be the desired number of valence electrons on the constraint atoms, suitably multiplied by atomic coefficients in case a relative constraint between two atom groups has been used. The constaint type is selected with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#CONSTRAINT_TYPE|CONSTRAINT_TYPE]]. It is also possible to use fragment based constraints [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#FRAGMENT_CONSTRAINT|FRAGMENT_CONSTRAINT]], in which case the constraint target value is calculated from the superposition of isolated fragment densities according to the scheme in Figure 3+In the above example, a Becke constraint is selected using the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT#TYPE_OF_CONSTRAINT|TYPE_OF_CONSTRAINT]]. The actual constraints are defined using the section [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP|ATOM_GROUP]]. Each repetition of this section defines a new constraint. The constraint atoms are selected with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#ATOMS|ATOMS]] and the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#COEFF|COEFF]] determines how the atoms are summed up to form the constraint. Usually all coefficients are set to +1, but mixing +1 and -1 coefficients would define the constraint as the difference between two groups of atoms. The keywords [[inp>FORCE_EVAL/DFT/QS/CDFT#TARGET|TARGET]] and [[inp>FORCE_EVAL/DFT/QS/CDFT#STRENGTH|STRENGTH]] define the constraint target values and the initial constraint strengths $\vec\lambda$, respectively. The constraint target value should be the desired number of valence electrons on the constraint atoms, suitably multiplied by atomic coefficients in case a relative constraint between two atom groups has been used. The constaint type is selected with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#CONSTRAINT_TYPE|CONSTRAINT_TYPE]]. It is also possible to use fragment based constraints [[inp>FORCE_EVAL/DFT/QS/CDFT/ATOM_GROUP#FRAGMENT_CONSTRAINT|FRAGMENT_CONSTRAINT]], in which case the constraint target value is calculated from the superposition of isolated fragment densities according to the scheme in Figure 2
  
 {{ howto:cdft-fragment-constraint.png?350 }} {{ howto:cdft-fragment-constraint.png?350 }}
-**Figure 3.** Using a fragment based CDFT constraint. The system is first divided into two fragments with atomic positions fixed in the same configuration as in the full system. The electron and spin densities of the fragment systems are then saved to cube files and subsequently used as input files for the CDFT calculation, where the constraint target value is calculated from the superimposed fragment densities. +**Figure 2.** Using a fragment based CDFT constraint. The system is first divided into two fragments with atomic positions fixed in the same configuration as in the full system. The electron and spin densities of the fragment systems are then saved to cube files and subsequently used as input files for the CDFT calculation, where the constraint target value is calculated from the superimposed fragment densities. 
  
 The OUTER_SCF section within the CDFT section defines settings for the CDFT SCF loop. The keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF#EPS_SCF|EPS_SCF]] defines the CDFT constraint convergence threshold $\varepsilon$ and [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF#OPTIMIZER|OPTIMIZER]] selects the CDFT optimizer. Using Newton or quasi-Newton optimizers (Broyden methods) is recommended for most applications. These optimizers accept additional control settings that define how the Jacobian matrix is calculated (keywords JACOBIAN_*) and how to optimize the step size $\alpha$ (keywords *_LS). These keywords are available in the [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF/CDFT_OPT|CDFT_OPT]] section. MD simulations with a single constraint might benefit from using the bisect optimizer, which avoids building the Jacobian matrix, in case a considerable amount of the total time per MD step is spent in building the Jacobian. Notice, however, that the frequency of Jacobian rebuilds [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF/CDFT_OPT#JACOBIAN_FREQ|JACOBIAN_FREQ]] can be controlled on a per MD step and per CDFT SCF step basis. The Broyden optimizers require less frequent rebuilds of the Jacobian matrix because the matrix is [[https://en.wikipedia.org/wiki/Broyden%27s_method|rank-one updated]] every iteration, although the stability of the method with respect to the rebuild frequency needs to be carefully studied. The OUTER_SCF section within the CDFT section defines settings for the CDFT SCF loop. The keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF#EPS_SCF|EPS_SCF]] defines the CDFT constraint convergence threshold $\varepsilon$ and [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF#OPTIMIZER|OPTIMIZER]] selects the CDFT optimizer. Using Newton or quasi-Newton optimizers (Broyden methods) is recommended for most applications. These optimizers accept additional control settings that define how the Jacobian matrix is calculated (keywords JACOBIAN_*) and how to optimize the step size $\alpha$ (keywords *_LS). These keywords are available in the [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF/CDFT_OPT|CDFT_OPT]] section. MD simulations with a single constraint might benefit from using the bisect optimizer, which avoids building the Jacobian matrix, in case a considerable amount of the total time per MD step is spent in building the Jacobian. Notice, however, that the frequency of Jacobian rebuilds [[inp>FORCE_EVAL/DFT/QS/CDFT/OUTER_SCF/CDFT_OPT#JACOBIAN_FREQ|JACOBIAN_FREQ]] can be controlled on a per MD step and per CDFT SCF step basis. The Broyden optimizers require less frequent rebuilds of the Jacobian matrix because the matrix is [[https://en.wikipedia.org/wiki/Broyden%27s_method|rank-one updated]] every iteration, although the stability of the method with respect to the rebuild frequency needs to be carefully studied.
Line 321: Line 321:
 <note important>This simulation requires CP2K version 7.0 or later.</note> <note important>This simulation requires CP2K version 7.0 or later.</note>
  
-This tutorial is exactly the same as the Zn dimer example above but using Hirshfeld partitioning based constraints instead of Becke constraints. You can find the input files here. +This tutorial is exactly the same as the Zn dimer example above but using Hirshfeld partitioning based constraints instead of Becke constraints. You can find the input files {{:howto:cdft-tutorial-hirshfeld.zip|here}}
  
 It might be instructive to visualize how the Becke and Hirshfeld weight function schemes differ, in particular, how the methods assign a volume to each atom in the system. You can activate the section [[inp>FORCE_EVAL/DFT/QS/CDFT/PROGRAM_RUN_INFO/WEIGHT_FUNCTION|WEIGHT_FUNCTION]] to output the weight function as a cube file which you can visualize with e.g. VMD. Feel free to modify the water tutorial above to look at the differences between Becke and Hirshfeld constraints in a system with different chemical elements. It might be instructive to visualize how the Becke and Hirshfeld weight function schemes differ, in particular, how the methods assign a volume to each atom in the system. You can activate the section [[inp>FORCE_EVAL/DFT/QS/CDFT/PROGRAM_RUN_INFO/WEIGHT_FUNCTION|WEIGHT_FUNCTION]] to output the weight function as a cube file which you can visualize with e.g. VMD. Feel free to modify the water tutorial above to look at the differences between Becke and Hirshfeld constraints in a system with different chemical elements.
Line 496: Line 496:
 We can use CDFT states as the basis of a configuration interaction (CI) simulation to correct for SIE in this system. As the figure above shows, CDFT-CI using the PBE functional is able to reproduce the exact dissociation profile. You can read up on the theory behind CDFT-CI simulations from the references given at the start of this tutorial. Very briefly, CDFT-CI simulations involve representing the system's wavefunction as a linear combination of multiple CDFT states where the charge/spin density is constrained differently in different states. The CI expansion coefficients and energies are then obtained by solving a generalized eigenvalue equation where the effective Hamiltonian matrix describes how the CDFT states interact with each other.  We can use CDFT states as the basis of a configuration interaction (CI) simulation to correct for SIE in this system. As the figure above shows, CDFT-CI using the PBE functional is able to reproduce the exact dissociation profile. You can read up on the theory behind CDFT-CI simulations from the references given at the start of this tutorial. Very briefly, CDFT-CI simulations involve representing the system's wavefunction as a linear combination of multiple CDFT states where the charge/spin density is constrained differently in different states. The CI expansion coefficients and energies are then obtained by solving a generalized eigenvalue equation where the effective Hamiltonian matrix describes how the CDFT states interact with each other. 
  
-In this tutorial, you will reproduce the DFT and CDFT results from the figure above. You can find the input files here. The reference data used to plot Figure 4 are also included in the zip-folder. Please note that the reference results were obtained with a larger basis set and planewave cutoff as well as tighter convergence criteria than the settings you will be using in this tutorial.+In this tutorial, you will reproduce the DFT and CDFT results from the figure above. You can find the input files {{:howto:cdft-tutorial-h2.zip|here}}. The reference data used to plot Figure 4 are also included in the zip-folder. Please note that the reference results were obtained with a larger basis set and planewave cutoff as well as tighter convergence criteria than the settings you will be using in this tutorial.
  
   - Start by examining the simulation script ''energy.bash''. This tutorial involves a rather large number of simulations so running them will take a while. You can use the flag ''-x'' to separately run the different types of simulations (DFT, CDFT, CDFT-CI) needed in this tutorial.   - Start by examining the simulation script ''energy.bash''. This tutorial involves a rather large number of simulations so running them will take a while. You can use the flag ''-x'' to separately run the different types of simulations (DFT, CDFT, CDFT-CI) needed in this tutorial.
howto/cdft.txt · Last modified: 2024/01/03 13:20 by oschuett