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