subroutine init_cc_amplitudes
integer :: n_excits(cc_order)
root_print "------ test on the cc ------- "
n_excits = calc_number_of_excitations(nOccAlpha, nOccBeta, cc_order, &
nbasis / 2)
root_print "total number of possible excitations: "
root_print n_excits
call setup_ind_matrix_singles()
call setup_ind_matrix_doubles()
! should i do this on each processors independently and then gather
! or should i gather first?
! if i want to calculate the T_2^2 i would need all of the
! doubles i guess.. so i can fill them independently, but should
! then communicat..
call fill_cc_amplitudes(n_excits)
! to calculate all the possible cc-amps i need to communicate the
! operators.
call communicate_cc_amps(n_excits)
call calc_n_triples()
if (t_store_hash_quadrupels) then
quad_hash_size = n_doubles * (n_doubles - 1) / 2
call init_cc_hash(quad_hash, quad_hash_size)
end if
call calc_n_quads()
call calc_cc_quad_norm(quad_hash, quad_hash_size)
print *, "number of hash clashes: ", n_clashes, "on proc: ", iProcIndex
! now i have to gather the information..
call MPISumAll(n_singles, all_n_singles)
call MPISumAll(n_doubles, all_n_doubles)
call MPISumAll(est_triples, all_est_triples)
! can it do matrices:
call MPISumAll(cc_amp_norm, all_cc_amp_norm)
if (iProcIndex == root) then
print *, " ---------- Singles -----------------"
print *, "sampled singles in FCIQMC wavefunction: ", all_n_singles
print *, "L0 Norm of singles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(0, 1, 1)
print *, "L1 Norm of singles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(1, 1, 1)
print *, "L2 Norm of singles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(2, 1, 1)
print *, "L0 Norm of singles in CC-wavefunction: ", all_cc_amp_norm(0, 1)
print *, "L1 Norm of singles in CC-wavefunction: ", all_cc_amp_norm(1, 1)
print *, "L2 Norm of singles in CC-wavefunction: ", all_cc_amp_norm(2, 1)
print *, ""
print *, " ------------ Doubles -----------------"
print *, "sampled doubles in FCIQMC wavefunction: ", all_n_doubles
print *, "L0 Norm of doubles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(0, 2, 1)
print *, "L1 Norm of doubles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(1, 2, 1)
print *, "L2 Norm of doubles in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(2, 2, 1)
print *, "L0 Norm of doubles in CC-wavefunction: ", all_cc_amp_norm(0, 2)
print *, "L1 Norm of doubles in CC-wavefunction: ", all_cc_amp_norm(1, 2)
print *, "L2 Norm of doubles in CC-wavefunction: ", all_cc_amp_norm(2, 2)
print *, ""
print *, " ------------ Triples ------------------ "
print *, "est. triples from T1^2 and T1*T2 ", all_est_triples
print *, "L0 Norm of triples in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(0, 3, 1)
print *, "L1 Norm of triples in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(1, 3, 1)
print *, "L2 Norm of triples in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(2, 3, 1)
print *, "L0 Norm of triples in CC-wavefunction: ", all_cc_amp_norm(0, 3)
print *, "L1 Norm of triples in CC-wavefunction: ", all_cc_amp_norm(1, 3)
print *, "L2 Norm of triples in CC-wavefunction: ", all_cc_amp_norm(2, 3)
print *, ""
print *, " ----------- Quadruples ----------------- "
print *, "L0 Norm of quadrupels in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(0, 4, 1)
print *, "L1 Norm of quadrupels in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(1, 4, 1)
print *, "L2 Norm of quadrupels in FCIQMC wavefunction: ", AllEXLEVEL_WNorm(2, 4, 1)
print *, "estimated quadrupels from T2^2: "
print *, "L0 Norm of quadrupels in CC-wavefunction: ", &
all_cc_amp_norm(0, 4)
print *, "L1 Norm of quadrupels in CC-wavefunction: ", &
all_cc_amp_norm(1, 4)
print *, "L2 Norm of quadrupels in CC-wavefunction: ", &
all_cc_amp_norm(2, 4)
print *, ""
end if
end subroutine init_cc_amplitudes