Mistake in CDFT

I want to set the charge of H in the system to 1 and keep it unchanged. The following is my input file, but after the calculation is completed, the charge does not calculate according to the value I set. Why is this?
$molecule
0 1
O -1.50508 -0.00384 -0.11373
H -1.92470 0.02127 0.75258
H -0.61943 0.00251 0.04621
O 1.40004 0.00219 0.10883
H 1.75723 -0.77213 -0.34603
H 1.76402 0.75175 -0.38078
$end

$rem
JOBTYPE FORCE
METHOD MP2
BASIS aug-cc-pVDZ
SCF_PRINT TRUE
CDFT TRUE
GUI = 2
$end

$cdft
2
1 1 2
-1 3 3
$end
Here is Ground-State Mulliken Net Atomic Charges in out:
1 O -0.712013
2 H -2.176114
3 H 2.193725
4 O 0.050535
5 H 0.321586
6 H 0.322282

The CDFT constraints are enforced based on the Becke charge population scheme. Here you are looking at the Mulliken charges where the constraint will not be exactly enforced. If you check the Becke charges, then the charge population on atoms 1-2 minus that on 3 should be -2 (corresponding to 2 excess electrons).

One additional comment: We would not recommend doing MP2 force calculations using CDFT. In fact, we are going to disable all the post-HF calculations in the same job with CDFT because that kind of calculation has never been properly tested and may end up giving problems that haven’t been identified. CDFT means constrained Density Functional Theory and currently it is only supposed to be used for DFT.

You can set CDFT_BECKE_POP = TRUE to print out the populations that were actually used to enforce the constraint.

This is the distribution of Becke charge population in the out file, and it is not calculated according to what I set. Why is this?

              CDFT Becke Populations

        Atom      Excess Electrons     Population (a.u.)            
   1       O        0.883677        8.883677
   2       H        0.428309        1.428309
   3       H       -0.688014        0.311986
   4       O       -0.182932        7.817068
   5       H       -0.220388        0.779612
   6       H       -0.220301        0.779699

If I understand your $cdft section correctly, you are trying to put a full positive charge on atom 3 (hydrogen). This seems unphysical and it is not guaranteed that cDFT is able to converge to such a state. The manual suggests that your $cdft section is equivalent to

$cdft
1
1 1 2
-1
1 3 3
$end

and that calculation fails to converge. At the end, the Lagrange multiplier for the 2nd constraint is extremely large, suggesting the algorithm is having difficulty finding such a state.

I suggest that you find a less contrived example.

That is to say, my calculated result deviates so much from the setting, is it caused by my structural problems? You can see that I want to specify that atom 3 is hydrogen with a full charge, but the result is even negative.

The constraints are specified in terms of excess electrons, and the constraints that you have chosen are asking for -1 excess electrons on atom 3 (as I indicated above in my alternative $cdft section). The solution that Q-Chem determined has -0.7 excess electrons. My guess is that your requested constraints are simply so unphysical that the algorithm is unable to get all the way there.

I suggest that you try some different (less unrealistic) cDFT examples, perhaps the ones that are in the manual, before you jump right into a complicated example.

In fact, the contraint

$cdft
2
1 1 2
-1 3 3
$end

asks for q(1+2) - q(3) = -2. This may not be equivalent to

$cdft
1
1 1 2
-1
1 3 3
$end

where the absolute charge population of atoms 1-2 and atom 3 are set respectively.

If you look at the “Excess Electrons” calculated based on Becke population, the constraint was almost perfectly satisfied despite being quite unphysical as John pointed out, since

0.883677 + 0.428309 - (-0.688014) = 2.0

Therefore, the statement “it is not calculated according to what I set” is simply not true

I am currently confused about the Settings of cdft fragments. So if I want H to have a positive charge and OH to have a negative charge, how do I set that up?

If you want to enforce integer charges on OH (-1) and H (+1) in the dimer system, then

$cdft
1
1 1 2
-1
1 3 3
$end

is the correct way of doing it. Again, as we said, this might be a too strong constraint.