The algorithm of this hybrid method is that our plane wave code generates the Blöchl atomic point charges and passes these point charges to the cDFT code. Then cDFT calculates the ion distributions and potentials based on these point charges and sends back the potentials on quantum atoms to the plane wave code. Next, the plane-wave code updates the wavefunctions and forces on the quantum atoms and generates a new set of point charges on atoms corresponding to the new potentials. This loop is iterated until the convergence is achieved (the change in the total energy is smaller than the desired value 10 -5 kcal/mol in this work) and this procedure optimizes the total energy.