mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-26 06:21:45 +02:00
L3 weight
This commit is contained in:
parent
de1791f9d6
commit
50b12bcacb
@ -1,26 +1,4 @@
|
|||||||
use bitmasks
|
use bitmasks
|
||||||
BEGIN_PROVIDER [ double precision, selection_weight, (N_states) ]
|
|
||||||
implicit none
|
|
||||||
BEGIN_DOC
|
|
||||||
! Weight of the states in the selection : 1/(sum_i c_i^4)
|
|
||||||
END_DOC
|
|
||||||
integer :: i,k
|
|
||||||
double precision :: c
|
|
||||||
print *, 'Selection weights'
|
|
||||||
print *, '-----------------'
|
|
||||||
do i=1,N_states
|
|
||||||
selection_weight(i) = 0.d0
|
|
||||||
do k=1,N_det
|
|
||||||
c = psi_coef(k,i)*psi_coef(k,i)
|
|
||||||
selection_weight(i) = selection_weight(i) + c*abs(psi_coef(k,i))
|
|
||||||
enddo
|
|
||||||
selection_weight(i) = 1.d0/selection_weight(i)
|
|
||||||
print *, i, selection_weight(i)
|
|
||||||
enddo
|
|
||||||
print *, '-----------------'
|
|
||||||
|
|
||||||
END_PROVIDER
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, fragment_count ]
|
BEGIN_PROVIDER [ integer, fragment_count ]
|
||||||
implicit none
|
implicit none
|
||||||
@ -654,7 +632,7 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d
|
|||||||
endif
|
endif
|
||||||
e_pert = 0.5d0 * (tmp - delta_E)
|
e_pert = 0.5d0 * (tmp - delta_E)
|
||||||
pt2(istate) = pt2(istate) + e_pert
|
pt2(istate) = pt2(istate) + e_pert
|
||||||
sum_e_pert = sum_e_pert + e_pert * selection_weight(istate)
|
sum_e_pert = sum_e_pert + e_pert * state_average_weight(istate)
|
||||||
end do
|
end do
|
||||||
|
|
||||||
if(sum_e_pert <= buf%mini) then
|
if(sum_e_pert <= buf%mini) then
|
||||||
|
@ -40,6 +40,13 @@ doc: Force the wave function to be an eigenfunction of S^2
|
|||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: True
|
default: True
|
||||||
|
|
||||||
|
[use_l3_weight]
|
||||||
|
type: logical
|
||||||
|
doc: If true, set the state-averaged weight to 1/(Norm_L3(Psi))
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: False
|
||||||
|
|
||||||
|
|
||||||
[threshold_generators]
|
[threshold_generators]
|
||||||
type: Threshold
|
type: Threshold
|
||||||
doc: Thresholds on generators (fraction of the norm)
|
doc: Thresholds on generators (fraction of the norm)
|
||||||
|
@ -361,6 +361,28 @@ subroutine save_natural_mos
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, l3_weight, (N_states) ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Weight of the states in the selection : 1/(sum_i c_i^4)
|
||||||
|
END_DOC
|
||||||
|
integer :: i,k
|
||||||
|
double precision :: c
|
||||||
|
do i=1,N_states
|
||||||
|
l3_weight(i) = 1.d-31
|
||||||
|
do k=1,N_det
|
||||||
|
c = psi_coef(k,i)*psi_coef(k,i)
|
||||||
|
l3_weight(i) = l3_weight(i) + c*abs(psi_coef(k,i))
|
||||||
|
enddo
|
||||||
|
l3_weight(i) = min(1.d0/l3_weight(i), 100.d0)
|
||||||
|
enddo
|
||||||
|
print *, 'L3 weights'
|
||||||
|
print *, '----------'
|
||||||
|
print *, l3_weight(1:N_states)
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, state_average_weight, (N_states) ]
|
BEGIN_PROVIDER [ double precision, state_average_weight, (N_states) ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -368,13 +390,17 @@ BEGIN_PROVIDER [ double precision, state_average_weight, (N_states) ]
|
|||||||
END_DOC
|
END_DOC
|
||||||
logical :: exists
|
logical :: exists
|
||||||
|
|
||||||
state_average_weight(:) = 1.d0
|
if (use_l3_weight) then
|
||||||
call ezfio_has_determinants_state_average_weight(exists)
|
state_average_weight(:) = l3_weight(:)
|
||||||
if (exists) then
|
else
|
||||||
call ezfio_get_determinants_state_average_weight(state_average_weight)
|
state_average_weight(:) = 1.d0
|
||||||
|
call ezfio_has_determinants_state_average_weight(exists)
|
||||||
|
if (exists) then
|
||||||
|
call ezfio_get_determinants_state_average_weight(state_average_weight)
|
||||||
|
endif
|
||||||
|
state_average_weight(:) = state_average_weight(:)+1.d-31
|
||||||
|
state_average_weight(:) = state_average_weight(:)/(sum(state_average_weight(:)))
|
||||||
endif
|
endif
|
||||||
state_average_weight(:) = state_average_weight(:)+1.d-31
|
|
||||||
state_average_weight(:) = state_average_weight(:)/(sum(state_average_weight(:)))
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -367,13 +367,13 @@ end
|
|||||||
j = psi_bilinear_matrix_columns(k)
|
j = psi_bilinear_matrix_columns(k)
|
||||||
f = 0.d0
|
f = 0.d0
|
||||||
do l=1,N_states
|
do l=1,N_states
|
||||||
f += psi_bilinear_matrix_values(k,l)*psi_bilinear_matrix_values(k,l)
|
f += psi_bilinear_matrix_values(k,l)*psi_bilinear_matrix_values(k,l) * state_average_weight(l)
|
||||||
enddo
|
enddo
|
||||||
det_alpha_norm(i) += f
|
det_alpha_norm(i) += f
|
||||||
det_beta_norm(j) += f
|
det_beta_norm(j) += f
|
||||||
enddo
|
enddo
|
||||||
det_alpha_norm = det_alpha_norm / dble(N_states)
|
det_alpha_norm = det_alpha_norm
|
||||||
det_beta_norm = det_beta_norm / dble(N_states)
|
det_beta_norm = det_beta_norm
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user