diff --git a/devel/sr_correction/EZFIO.cfg b/devel/sr_correction/EZFIO.cfg new file mode 100644 index 0000000..dd99fd7 --- /dev/null +++ b/devel/sr_correction/EZFIO.cfg @@ -0,0 +1,12 @@ +[energy_mu] +type: double precision +doc: Energy E(mu) +size: (determinants.n_states) +interface: ezfio + +[energy] +type: double precision +doc: Energy E(mu) + alpha_0 +size: (determinants.n_states) +interface: ezfio + diff --git a/devel/sr_correction/NEED b/devel/sr_correction/NEED new file mode 100644 index 0000000..280fd8d --- /dev/null +++ b/devel/sr_correction/NEED @@ -0,0 +1,3 @@ +davidson_undressed +two_body_rdm +mo_two_e_ints diff --git a/devel/sr_correction/README.rst b/devel/sr_correction/README.rst new file mode 100644 index 0000000..25e1cff --- /dev/null +++ b/devel/sr_correction/README.rst @@ -0,0 +1,5 @@ +============= +sr_correction +============= + +Correction of the energy obtained with a Long-Range Hamiltonian diff --git a/devel/sr_correction/alpha.irp.f b/devel/sr_correction/alpha.irp.f new file mode 100644 index 0000000..cbbb3fa --- /dev/null +++ b/devel/sr_correction/alpha.irp.f @@ -0,0 +1,18 @@ +BEGIN_PROVIDER [ double precision, alpha_coef, (0:1) ] + implicit none + BEGIN_DOC + ! SavCar-JCP-23 + END_DOC + + double precision :: num, den + + num = 0.319820d0 + mu_erf * (1.063846d0 + mu_erf) + den = 0.487806d0 + mu_erf * (1.375439d0 + mu_erf) + alpha_coef(0) = num/den + + num = 0.113074d0 + mu_erf * (0.638308d0 + mu_erf) + den = 0.122652d0 + mu_erf * (0.674813d0 + mu_erf) + alpha_coef(1) = num/den +END_PROVIDER + + diff --git a/devel/sr_correction/energy_mu.irp.f b/devel/sr_correction/energy_mu.irp.f new file mode 100644 index 0000000..0ee1533 --- /dev/null +++ b/devel/sr_correction/energy_mu.irp.f @@ -0,0 +1,80 @@ +BEGIN_PROVIDER [ double precision, W_mu, (mo_num, mo_num, mo_num, mo_num) ] + implicit none + BEGIN_DOC + ! $$ in MO basis + END_DOC + + integer :: i,j,k,l + do l=1,mo_num + do k=1,mo_num + do j=1,mo_num + do i=1,mo_num + double precision, external :: mo_two_e_integral_erf + W_mu(i,j,k,l) = mo_two_e_integral_erf(i,j,k,l) + enddo + enddo + enddo + enddo +END_PROVIDER + +BEGIN_PROVIDER [ double precision, W_bar_mu, (mo_num, mo_num, mo_num, mo_num) ] + implicit none + BEGIN_DOC + ! $$ in MO basis + END_DOC + + integer :: i,j,k,l + do l=1,mo_num + do k=1,mo_num + do j=1,mo_num + do i=1,mo_num + double precision, external :: mo_two_e_integral + W_bar_mu(i,j,k,l) = mo_two_e_integral(i,j,k,l) - W_mu(i,j,k,l) + enddo + enddo + enddo + enddo +END_PROVIDER + +BEGIN_PROVIDER [ double precision, energy_mu ] + implicit none + BEGIN_DOC + ! E(mu) + END_DOC + + double precision :: one_e, two_e + + integer :: k,l + double precision, external :: ddot + + one_e = 0.d0 + two_e = 0.d0 + do l=1,mo_num + one_e += ddot(mo_num, one_e_dm_mo(1,l), 1, mo_one_e_integrals(1,l), 1) + do k=1,mo_num + two_e += 0.5d0 * ddot (mo_num*mo_num, two_e_dm_mo(1,1,k,l), 1, W_mu(1,1,k,l), 1) + enddo + enddo + energy_mu = one_e + two_e + nuclear_repulsion +END_PROVIDER + +BEGIN_PROVIDER [ double precision, correction_alpha_0 ] + implicit none + BEGIN_DOC + ! alpha_0(mu) * + END_DOC + + double precision :: one_e, two_e + + integer :: k,l + double precision, external :: ddot + + correction_alpha_0 = 0.d0 + do l=1,mo_num + do k=1,mo_num + correction_alpha_0 += 0.5d0 * ddot (mo_num*mo_num, two_e_dm_mo(1,1,k,l), 1, W_bar_mu(1,1,k,l), 1) + enddo + enddo + correction_alpha_0 = correction_alpha_0*alpha_coef(0) +END_PROVIDER + diff --git a/devel/sr_correction/sr_correction.irp.f b/devel/sr_correction/sr_correction.irp.f new file mode 100644 index 0000000..76c9866 --- /dev/null +++ b/devel/sr_correction/sr_correction.irp.f @@ -0,0 +1,14 @@ +program sr_correction_opt_psi + implicit none + read_wf = .True. + use_only_lr = .False. + SOFT_TOUCH read_wf use_only_lr + call run +end + +subroutine run + implicit none + print *, 'E(mu)', energy_mu + print *, 'correction', correction_alpha_0 + print *, 'E = ', energy_mu + correction_alpha_0 +end diff --git a/devel/qmcchem/EZFIO.cfg b/stable/qmcchem/EZFIO.cfg similarity index 100% rename from devel/qmcchem/EZFIO.cfg rename to stable/qmcchem/EZFIO.cfg diff --git a/devel/qmcchem/NEED b/stable/qmcchem/NEED similarity index 100% rename from devel/qmcchem/NEED rename to stable/qmcchem/NEED diff --git a/devel/qmcchem/README.rst b/stable/qmcchem/README.rst similarity index 100% rename from devel/qmcchem/README.rst rename to stable/qmcchem/README.rst diff --git a/devel/qmcchem/expand_spindets_qmcchem.irp.f b/stable/qmcchem/expand_spindets_qmcchem.irp.f similarity index 100% rename from devel/qmcchem/expand_spindets_qmcchem.irp.f rename to stable/qmcchem/expand_spindets_qmcchem.irp.f diff --git a/devel/qmcchem/pot_ao_pseudo_ints.irp.f b/stable/qmcchem/pot_ao_pseudo_ints.irp.f similarity index 100% rename from devel/qmcchem/pot_ao_pseudo_ints.irp.f rename to stable/qmcchem/pot_ao_pseudo_ints.irp.f diff --git a/devel/qmcchem/pseudo.irp.f b/stable/qmcchem/pseudo.irp.f similarity index 100% rename from devel/qmcchem/pseudo.irp.f rename to stable/qmcchem/pseudo.irp.f diff --git a/devel/qmcchem/qmc_e_curve.irp.f b/stable/qmcchem/qmc_e_curve.irp.f similarity index 100% rename from devel/qmcchem/qmc_e_curve.irp.f rename to stable/qmcchem/qmc_e_curve.irp.f diff --git a/devel/qmcchem/qmc_e_curve2.irp.f b/stable/qmcchem/qmc_e_curve2.irp.f similarity index 100% rename from devel/qmcchem/qmc_e_curve2.irp.f rename to stable/qmcchem/qmc_e_curve2.irp.f diff --git a/devel/qmcchem/save_for_qmcchem.irp.f b/stable/qmcchem/save_for_qmcchem.irp.f similarity index 100% rename from devel/qmcchem/save_for_qmcchem.irp.f rename to stable/qmcchem/save_for_qmcchem.irp.f diff --git a/devel/qmcchem/truncate_wf_qmcchem.irp.f b/stable/qmcchem/truncate_wf_qmcchem.irp.f similarity index 100% rename from devel/qmcchem/truncate_wf_qmcchem.irp.f rename to stable/qmcchem/truncate_wf_qmcchem.irp.f