diff --git a/external/qp2-dependencies b/external/qp2-dependencies index b8cd5815..f40bde09 160000 --- a/external/qp2-dependencies +++ b/external/qp2-dependencies @@ -1 +1 @@ -Subproject commit b8cd5815bce14c9b880e3c5ea3d5fc2652f5955c +Subproject commit f40bde0925808bbec0424b57bfcef1b26473a1c8 diff --git a/src/dft_utils_func/rho_ab_to_rho_tot.irp.f b/src/dft_utils_func/rho_ab_to_rho_tot.irp.f index 919543fe..d4d5a536 100644 --- a/src/dft_utils_func/rho_ab_to_rho_tot.irp.f +++ b/src/dft_utils_func/rho_ab_to_rho_tot.irp.f @@ -66,10 +66,27 @@ subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) END_DOC double precision, intent(in) :: v_rho_o,v_rho_c double precision, intent(out) :: v_rho_a,v_rho_b +! print*,'in v_rho_oc_to_v_rho_ab' +! print*, v_rho_c , v_rho_o v_rho_a = v_rho_c + v_rho_o v_rho_b = v_rho_c - v_rho_o end +subroutine v_grad_rho_ab_to_v_grad_rho_oc(v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b,v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c) + implicit none + double precision, intent(in) :: v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b + double precision, intent(out) :: v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c + BEGIN_DOC +! convert (v_grad_rho_a_2, v_grad_rho_b_2, v_grad_rho_a.grad_rho_b) +! +! to (v_grad_rho_c_2, v_grad_rho_o_2, v_grad_rho_o.grad_rho_c) +! +! rho_c = total density, rho_o spin density + END_DOC + v_grad_rho_c_2 = 0.25d0 * (v_grad_rho_a_2 + v_grad_rho_b_2 + v_grad_rho_a_b) + v_grad_rho_o_2 = 0.25d0 * (v_grad_rho_a_2 + v_grad_rho_b_2 - v_grad_rho_a_b) + v_grad_rho_o_c = 0.25d0 * (2d0 * v_grad_rho_a_2 - 2d0 * v_grad_rho_b_2 ) +end subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) @@ -88,21 +105,3 @@ subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_r v_grad_rho_a_b = -2d0 * v_grad_rho_o_2 + 2d0 * v_grad_rho_c_2 end - - - - - - - - - - - - - - - - - - diff --git a/src/dft_utils_in_r/dm_in_r.irp.f b/src/dft_utils_in_r/dm_in_r.irp.f index 53e15b06..feb174fd 100644 --- a/src/dft_utils_in_r/dm_in_r.irp.f +++ b/src/dft_utils_in_r/dm_in_r.irp.f @@ -45,6 +45,8 @@ call density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, dm_a_grad, dm_b_grad, aos_array, grad_aos_array) ! alpha/beta density + dm_a(istate) = max(dm_a(istate),1.d-12) + dm_b(istate) = max(dm_b(istate),1.d-12) one_e_dm_and_grad_alpha_in_r(4,i,istate) = dm_a(istate) one_e_dm_and_grad_beta_in_r(4,i,istate) = dm_b(istate) @@ -80,6 +82,7 @@ enddo enddo !$OMP END PARALLEL DO + print*,'density and gradients provided' END_PROVIDER