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:28] – [Example: Configuration interaction calculations with CDFT (CDFT-CI): The case of $\mathrm{H}_2^+$] nholmberhowto:cdft [2022/05/18 20:24] – Update for new CDFT forces based on Hirshfeld partitioning of the electron density (CP2K version 10 #2111) cahart
Line 7: Line 7:
 <note important> <note important>
  
-CP2K version 5.1 or higher is needed to perform CDFT simulations.+CP2K version 5.1 or higher is needed to perform CDFT simulations. CP2K version 10 or higher is needed to perform CDFT force calculations with Hirshfeld based constraints.
  
 </note> </note>
 +
  
 ---- ----
Line 40: Line 41:
   * spin specific constraint ($\rho^{\uparrow/\downarrow}$): $w^{\uparrow/\downarrow} = w, w^{\downarrow/\uparrow} = 0$   * spin specific constraint ($\rho^{\uparrow/\downarrow}$): $w^{\uparrow/\downarrow} = w, w^{\downarrow/\uparrow} = 0$
  
-The Becke and Hirshfeld space partitioning schemes can be used as constraint weight functions in CP2K. The main differences between these two constraints will be explained in a subsequent section. Please note that Becke constraints have been tested much more extensively+The Becke and Hirshfeld space partitioning schemes can be used as constraint weight functions in CP2K. The main differences between these two constraints will be explained in a subsequent section. 
  
-When CDFT is used in a molecular dynamics or a geometry optimization simulation, additional force terms arising from the constraints are calculated (currently only implemented for Becke constraints)+When CDFT is used in a molecular dynamics or a geometry optimization simulation, additional force terms arising from the constraints are calculated
  
 \begin{equation} \begin{equation}
Line 157: Line 158:
   - 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 168: Line 169:
 ==== Available constraints ===== ==== Available constraints =====
  
-The CDFT module in CP2K currently supports using Becke or Hirshfeld (no forces) based constraints. The main aspects of these weight functions and their use as CDFT constraints will be explained in this section. Weight function specific settings are defined in the sections [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT|BECKE_CONSTRAINT]] [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT|HIRSHFELD_CONSTRAINT]]. If you want to visualize the weight functions to e.g. see the effects of using different parameters, you can use the section [[inp>FORCE_EVAL/DFT/QS/CDFT/PROGRAM_RUN_INFO/WEIGHT_FUNCTION|WEIGHT_FUNCTION]] to print the CDFT weight function to a cube file. +The CDFT module in CP2K currently supports using Becke or Hirshfeld based constraints. The main aspects of these weight functions and their use as CDFT constraints will be explained in this section. Weight function specific settings are defined in the sections [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT|BECKE_CONSTRAINT]] [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT|HIRSHFELD_CONSTRAINT]]. If you want to visualize the weight functions to e.g. see the effects of using different parameters, you can use the section [[inp>FORCE_EVAL/DFT/QS/CDFT/PROGRAM_RUN_INFO/WEIGHT_FUNCTION|WEIGHT_FUNCTION]] to print the CDFT weight function to a cube file. 
  
  
Line 176: Line 177:
  
 {{ howto:cdft-becke-atomicsize.png?400}}{{ howto:cdft-becke.png?400 }}\\ {{ howto:cdft-becke-atomicsize.png?400}}{{ howto:cdft-becke.png?400 }}\\
-**Figure 2.** Comparison of the Voronoi (lines) and Becke partitioning (contours) schemes. At left, the Becke partitioning is performed without atomic size information. At right, the size of the red atom is 30 % larger than the black atoms, and the contours of the red atom extend farther than without atomic size adjustments. +**Figure 3.** Comparison of the Voronoi (lines) and Becke partitioning (contours) schemes. At left, the Becke partitioning is performed without atomic size information. At right, the size of the red atom is 30 % larger than the black atoms, and the contours of the red atom extend farther than without atomic size adjustments. 
  
-The Voronoi and, by extension, the Becke partitioning methods treat each element equally. This leads to unphysical partial charges in most systems. For example, the Becke scheme predicts a positive charge on oxygen and a negative charge on hydrogen in water (see examples for input files). This problem can be remedied by accounting for atomic radii during the partitioning. This behavior is activated by the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#ADJUST_SIZE|ADJUST_SIZE]] and the atomic radii are defined with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#ATOMIC_RADII|ATOMIC_RADII]]. The atomic radii should be set to values that reflect the system under simulation, e.g. using additive covalent radii for covalent molecules or Shannon's ionic radii for ionic compounds. An example on how atomic size adjustments affect the Becke cell functions has been visualized above in Figure at right, where the size of the red atom is set to a value 30 % larger than the black atoms causing the red atom's contours to extend farther than without atomic size adjustments.+The Voronoi and, by extension, the Becke partitioning methods treat each element equally. This leads to unphysical partial charges in most systems. For example, the Becke scheme predicts a positive charge on oxygen and a negative charge on hydrogen in water (see examples for input files). This problem can be remedied by accounting for atomic radii during the partitioning. This behavior is activated by the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#ADJUST_SIZE|ADJUST_SIZE]] and the atomic radii are defined with the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#ATOMIC_RADII|ATOMIC_RADII]]. The atomic radii should be set to values that reflect the system under simulation, e.g. using additive covalent radii for covalent molecules or Shannon's ionic radii for ionic compounds. An example on how atomic size adjustments affect the Becke cell functions has been visualized above in Figure at right, where the size of the red atom is set to a value 30 % larger than the black atoms causing the red atom's contours to extend farther than without atomic size adjustments.
  
 The algorithmic implementation of the Becke density partitioning method has been detailed [[doi>10.1021/acs.jctc.6b01085|here]]. In brief, this involves iterating over each atom pair permutation $\{\mathbf{R}_i, \mathbf{R}_j\}, j\neq i$ at every real space grid point $\mathbf{r}$. This leads to a poor scaling with respect to the system size (cell size and planewave cutoff) and the number of atoms within the system, and is particularly troublesome for  solvated system simulations. The computational cost of the Becke method can be considerably decreased by noting that only the grid points within a cutoff distance $R_{cutoff}$ ([[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#CUTOFF_TYPE|CUTOFF_TYPE]]) of atoms involved in constraints actually need to be considered. The other grid points can be efficiently screened with constraint atom centered spherical Gaussian functions, activated by the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#CAVITY_CONFINE|CAVITY_CONFINE]] and controlled by other keywords of the form CAVITY_*. The exact details of this confinement scheme and why it can be used are explained in the implementation paper. The algorithmic implementation of the Becke density partitioning method has been detailed [[doi>10.1021/acs.jctc.6b01085|here]]. In brief, this involves iterating over each atom pair permutation $\{\mathbf{R}_i, \mathbf{R}_j\}, j\neq i$ at every real space grid point $\mathbf{r}$. This leads to a poor scaling with respect to the system size (cell size and planewave cutoff) and the number of atoms within the system, and is particularly troublesome for  solvated system simulations. The computational cost of the Becke method can be considerably decreased by noting that only the grid points within a cutoff distance $R_{cutoff}$ ([[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#CUTOFF_TYPE|CUTOFF_TYPE]]) of atoms involved in constraints actually need to be considered. The other grid points can be efficiently screened with constraint atom centered spherical Gaussian functions, activated by the keyword [[inp>FORCE_EVAL/DFT/QS/CDFT/BECKE_CONSTRAINT#CAVITY_CONFINE|CAVITY_CONFINE]] and controlled by other keywords of the form CAVITY_*. The exact details of this confinement scheme and why it can be used are explained in the implementation paper.
Line 207: Line 208:
 == Hirshfeld constraints == == Hirshfeld constraints ==
  
-Hirshfeld constraints are cheaper to construct than Becke constraints in large systems because Hirshfeld constraints are essentially just weighted sums of spherical Gaussian functions. The keywords [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT#SHAPE_FUNCTION|SHAPE_FUNCTION]] and [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT#GAUSSIAN_SHAPE|GAUSSIAN_SHAPE]] define which type of Hirshfeld constraint to apply to the system. The shape function keyword accepts two values: Gaussian or Density. +Hirshfeld constraints are cheaper to construct than Becke constraints in large systems because Hirshfeld constraints are essentially just weighted sums of spherical Gaussian functions. The keywords [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT#SHAPE_FUNCTION|SHAPE_FUNCTION]] and [[inp>FORCE_EVAL/DFT/QS/CDFT/HIRSHFELD_CONSTRAINT#GAUSSIAN_SHAPE|GAUSSIAN_SHAPE]] define which type of Hirshfeld constraint to apply to the system, consistent with the options for printing of Hirshfeld atomic charges (see [[inp>FORCE_EVAL/DFT/PRINT/HIRSHFELD#SHAPE_FUNCTION|SHAPE_FUNCTION]]) 
 + 
 +The shape function keyword accepts two values: Gaussian or Density. 
   * The first choice implies that the CDFT weight function for each atom is a single Gaussian function whose radius is controlled by the GAUSSIAN_SHAPE keyword. By default, tabulated covalent radii are used as the radii of the Gaussian, but it is also possible to select van der Waals radii or to define custom radii.    * The first choice implies that the CDFT weight function for each atom is a single Gaussian function whose radius is controlled by the GAUSSIAN_SHAPE keyword. By default, tabulated covalent radii are used as the radii of the Gaussian, but it is also possible to select van der Waals radii or to define custom radii. 
-  * The latter choice implies that the atomic weight function are constructed from isolated atomic densities which are expanded in terms of multiple spherical Gaussians. This choice is affected by the selected basis set and pseudopotential but not by the Gaussian shape keyword +  * The latter choice implies that the atomic weight function are constructed from isolated atomic densities which are expanded in terms of multiple spherical Gaussians. This choice avoids the introduction of any empirical parameters, and generally provides a more robust description of atomic charges than either Becke or Gaussian based Hirshfeld charge partitioning
  
 ==== Selected examples  ===== ==== Selected examples  =====
Line 319: Line 322:
 === Zn dimer cation with Hirshfeld constraints === === Zn dimer cation with Hirshfeld constraints ===
  
-This tutorial is exactly the same as the one above but using Hirshfeld based constraints instead of Becke constraints. +<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 {{: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.
  
  
Line 430: Line 437:
 In the above example input file, a common file ''${DFT_FILE}}'' is used as a template for the [[inp>FORCE_EVAL/DFT|DFT]] subsection. The CDFT state specific constraint settings and the wavefunction filename are passed through variables. The electronic coupling is calculated using the default weight function matrix and Löwdin orthogonalization methods. If molecular dynamics were performed with the above input file, the forces would be mixed according to linear mixing scheme $F = \lambda F_1 + (1-\lambda) F_2$, where the states $F_i$ are selected with the keyword [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#FORCE_STATES|FORCE_STATES]] and the mixing parameter $\lambda$ with [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#LAMBDA|LAMBDA]]. No configuration interaction calculation is performed. The [[inp>FORCE_EVAL/MIXED/MIXED_CDFT|MIXED_CDFT]] section accepts some additional keywords, which have been described in the manual.  In the above example input file, a common file ''${DFT_FILE}}'' is used as a template for the [[inp>FORCE_EVAL/DFT|DFT]] subsection. The CDFT state specific constraint settings and the wavefunction filename are passed through variables. The electronic coupling is calculated using the default weight function matrix and Löwdin orthogonalization methods. If molecular dynamics were performed with the above input file, the forces would be mixed according to linear mixing scheme $F = \lambda F_1 + (1-\lambda) F_2$, where the states $F_i$ are selected with the keyword [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#FORCE_STATES|FORCE_STATES]] and the mixing parameter $\lambda$ with [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#LAMBDA|LAMBDA]]. No configuration interaction calculation is performed. The [[inp>FORCE_EVAL/MIXED/MIXED_CDFT|MIXED_CDFT]] section accepts some additional keywords, which have been described in the manual. 
  
-The keyword [[inp>FORCE_EVAL/MIXED#NGROUPS|NGROUPS]] is set to 1, which implies that the two CDFT states are treated sequentially utilizing the full set of $N$ MPI processes for the simulation. The CDFT weight function and its gradients are copied from state to state if the constraints definitions are identical in each CDFT state, because construction of these terms might be expensive in large systems. The keyword [[inp>FORCE_EVAL/MIXED#NGROUPS|NGROUPS]] could also be set to 2 in which case the CDFT weight function and gradients would first be built in parallel on $N$ MPI processes, and the two CDFT states would then calculated in parallel with $N/2$ MPI processes. This operating mode is limited to two CDFT states with one identically defined total charge density constraint. This operating mode is an advanced feature which might be useful for large scale MD simulations to save computational wallclock time at the expense of higher CPU core usage. The operating mode should only be used in conjuction with [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#DLB|dynamic load balancing]] if possible, and will likely require tweaking the load balancing parameters.+The keyword [[inp>FORCE_EVAL/MIXED#NGROUPS|NGROUPS]] is set to 1, which implies that the two CDFT states are treated sequentially utilizing the full set of $N$ MPI processes for the simulation. The CDFT weight function and its gradients are copied from state to state if the constraints definitions are identical in each CDFT state, because construction of these terms might be expensive in large systems.  
 + 
 +The keyword [[inp>FORCE_EVAL/MIXED#NGROUPS|NGROUPS]] could also be set to 2 or a larger value if using more than 2 CDFT states. In this case, each CDFT state is solved in parallel using $N/N_\mathrm{groups}$ processors. This will likely reduce the wall clock time of your simulation at the expense of more computing resources. However, you should note that the weight function and its gradients are computed separately for each state instead of copied from state to state (if possible). This can be costly for large solvated systems. 
 + 
 +A special run type is available for ''NGROUPS 2'' if the keyword [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#PARALLEL_BUILD|PARALLEL_BUILD]] is activated. In this casethe CDFT weight function and gradients are first built in parallel on $N$ MPI processes, which are subsequently copied onto the two MPI processor groups of size $N/2$ which solve the CDFT states in parallel. This operating mode is limited to two CDFT states with one identically defined total charge density constraint. This operating mode is an advanced feature which might be useful for large scale MD simulations to save computational wallclock time at the expense of higher CPU core usage. The operating mode should only be used in conjuction with [[inp>FORCE_EVAL/MIXED/MIXED_CDFT#DLB|dynamic load balancing]] if possible, and will likely require tweaking the load balancing parameters.
    
 ==== Example: Electronic coupling of Zn cation dimer ====  ==== Example: Electronic coupling of Zn cation dimer ==== 
Line 492: Line 503:
 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