diff --git a/src/PROPERTIES/properties_ci.irp.f b/src/PROPERTIES/properties_ci.irp.f index d7f8f8c..ab9c338 100644 --- a/src/PROPERTIES/properties_ci.irp.f +++ b/src/PROPERTIES/properties_ci.irp.f @@ -332,27 +332,24 @@ return SOFT_TOUCH ci_dress_min ci_dress_max END_PROVIDER -BEGIN_PROVIDER [ double precision, ci_dress_mu_opt ] +BEGIN_PROVIDER [ double precision, ci_dress_opt ] BEGIN_DOC ! Use for optimizing mu END_DOC implicit none integer :: i, j, k, l double precision :: T, dij, f, E_noJ, dE -! E_noJ = -0.5d0*psidet_lapl*psidet_inv + E_pot + E_nucl -! ci_dress_mu_opt = (E_loc - energy_mu) * psi_value_inv * jast_value_inv * & -! det_alpha_value(1) * det_beta_value(1) - ! energy_mu = H_mu \Phi / \Phi - dE = (E_loc - energy_mu) * psi_value_inv * jast_value_inv -! dE = (E_loc - E_noJ) * psi_value_inv * jast_value_inv + ! energy = H \Phi / \Phi + E_noJ = -0.5d0*psidet_lapl*psidet_inv + E_pot + E_nucl + dE = (E_loc - E_noJ) * psi_value_inv * jast_value_inv ! PsiJ.J k = 1 i = det_coef_matrix_rows( k) j = det_coef_matrix_columns(k) f = det_alpha_value(i) * det_beta_value(j) - ci_dress_mu_opt = dE * f - ci_dress_mu_opt_min = min(ci_dress_mu_opt_min, ci_dress_mu_opt) - ci_dress_mu_opt_max = max(ci_dress_mu_opt_max, ci_dress_mu_opt) - SOFT_TOUCH ci_dress_mu_opt_min ci_dress_mu_opt_max + ci_dress_opt = dE * f + ci_dress_opt_min = min(ci_dress_opt_min, ci_dress_opt) + ci_dress_opt_max = max(ci_dress_opt_max, ci_dress_opt) + SOFT_TOUCH ci_dress_opt_min ci_dress_opt_max END_PROVIDER BEGIN_PROVIDER [ double precision, ci_dress_Htilde, (size_ci_dress) ] @@ -366,8 +363,7 @@ BEGIN_PROVIDER [ double precision, ci_dress_Htilde, (size_ci_dress) ] integer :: i, j, k, l double precision :: T, h_psidet, dij, f, E_noJ, dE - h_psidet = -0.5d0*psidet_lapl*psidet_inv + E_pot + E_nucl - E_noJ = h_psidet + E_noJ = -0.5d0*psidet_lapl*psidet_inv + E_pot + E_nucl dE = E_loc - E_noJ do k=1,det_num i = det_coef_matrix_rows(k) diff --git a/src/PROPERTIES/properties_mu.irp.f b/src/PROPERTIES/properties_mu.irp.f index 6125149..1244d83 100644 --- a/src/PROPERTIES/properties_mu.irp.f +++ b/src/PROPERTIES/properties_mu.irp.f @@ -22,13 +22,20 @@ BEGIN_PROVIDER [ double precision, Energy_mu ] implicit none integer :: i - Energy_mu = E_nucl - !DIR$ VECTOR ALIGNED - !DIR$ LOOP COUNT(200) - do i = 1, elec_num - Energy_mu += E_kin_elec_psidet(i) + double precision :: lapl + lapl = 0.d0 + do i=1,elec_num + lapl += psidet_grad_lapl(4,i)*psidet_inv + jast_elec_mu_lapl(i) + & + 2.d0*psidet_inv * (& + psidet_grad_lapl(1,i)*jast_elec_mu_grad_x(i) + & + psidet_grad_lapl(2,i)*jast_elec_mu_grad_y(i) + & + psidet_grad_lapl(3,i)*jast_elec_mu_grad_z(i) ) + ( & + jast_elec_mu_grad_x(i)*jast_elec_mu_grad_x(i) + & + jast_elec_mu_grad_y(i)*jast_elec_mu_grad_y(i) + & + jast_elec_mu_grad_z(i)*jast_elec_mu_grad_z(i) ) + enddo - Energy_mu += Eff_pot_mu + Eff_pot_deriv_mu + E_nucl_elec - three_body_mu + Energy_mu = -0.5d0 * lapl + E_nucl + E_pot energy_mu_min = min(energy_mu_min,energy_mu) energy_mu_max = max(energy_mu_max,energy_mu) @@ -239,3 +246,23 @@ BEGIN_PROVIDER [ double precision, ci_dress_mu, (size_ci_dress_mu) ] END_PROVIDER +BEGIN_PROVIDER [ double precision, ci_dress_mu_opt ] + BEGIN_DOC + ! Use for optimizing mu + END_DOC + implicit none + integer :: i, j, k, l + double precision :: T, dij, f, E_noJ, dE + ! energy_mu = H_mu \Phi / \Phi + dE = (E_loc - energy_mu) * psi_value_inv * jast_value_inv ! PsiJ.J + k = 1 + i = det_coef_matrix_rows( k) + j = det_coef_matrix_columns(k) + f = det_alpha_value(i) * det_beta_value(j) + ci_dress_mu_opt = dE * f + ci_dress_mu_opt = E_loc - energy_mu + ci_dress_mu_opt_min = min(ci_dress_mu_opt_min, ci_dress_mu_opt) + ci_dress_mu_opt_max = max(ci_dress_mu_opt_max, ci_dress_mu_opt) + SOFT_TOUCH ci_dress_mu_opt_min ci_dress_mu_opt_max +END_PROVIDER +