subroutine init_mol_tc_biases() use SystemData, only: tSmallBasisForThreeBody ! reference determinant for initializing the biases real(dp) :: normalization ! if we read in a value, use that one if (abs(pTriples) < eps) then pTriples = 0.1 end if ! for 2 electrons, there are obviously no ! triple excitations if (nel == 2 .or. .not. tSmallBasisForThreeBody) t_exclude_3_body_excits = .true. ! For contact interaction we also exclude the too small basis-sets if (t_exclude_3_body_excits) then pTriples = 0.0_dp return end if write(stdout, *) "pTriples set to ", pTriples ! pSingles and pDoubles add to 1, and pTriples is an additional bias not to do ! a two-body excitation if (tContact) then ! We do not have those kind of excitations for triples, where all the ! fermions are up or down. p0A = 0.0_dp p0B = 0.0_dp ! We determine the rate uniformly between all the possible exciations p2B = choose_i64(nOccBeta, 2) * nOccAlpha normalization = p2B + choose_i64(nOccAlpha, 2) * nOccBeta p2B = p2B / normalization else ! scale the probabilities with the number of possible picks normalization = choose_i64(nel, 3) p0A = choose_i64(nOccBeta, 3) / normalization p0B = choose_i64(noccAlpha, 3) / normalization p2B = choose_i64(nOccBeta, 2) * nOccAlpha / normalization end if p1B = 1.0_dp - p0A - p0B - p2B end subroutine init_mol_tc_biases