10
1
mirror of https://gitlab.com/scemama/qmcchem.git synced 2024-12-21 11:53:30 +01:00

ci_dress_mu_opt

This commit is contained in:
Anthony Scemama 2022-01-28 16:34:29 +01:00
parent 1b12940f93
commit 80821f9c6a
2 changed files with 42 additions and 19 deletions

View File

@ -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)

View File

@ -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