end_iteration_print_warn Subroutine

public subroutine end_iteration_print_warn(totWalkersNew)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: totWalkersNew

Contents


Source Code

    subroutine end_iteration_print_warn (totWalkersNew)

        ! Worker function for PerformFciMCycPar. Prints warnings about
        ! particle blooms and memory usage.
        integer, intent(in) :: totWalkersNew
        integer :: i
        real(dp) :: rat

        ! Too many particles?
        rat = real(TotWalkersNew,dp) / real(MaxWalkersPart,dp)
        if (rat > 0.95_dp) then
#ifdef DEBUG_
            if(tMolpro) then
                write(stderr, '(a)') '*WARNING* - Number of particles/determinants &
                                 &has increased to over 95% of allotted memory. &
                                 &Errors imminent. Increase MEMORYFACWALKERS, or reduce rate of growth.'
            else
                write(stderr, '(a)') '*WARNING* - Number of particles/determinants &
                                 &has increased to over 95% of allotted memory. &
                                 &Errors imminent. Increase MEMORYFACPART, or reduce rate of growth.'
            end if
#else
            if(tMolpro) then
                write(stderr,*) '*WARNING* - Number of particles/determinants &
                                 &has increased to over 95% of allotted memory on task ', iProcIndex, '. &
                                 &Errors imminent. Increase MEMORYFACWALKERS, or reduce rate of growth.'
            else
                write(stderr,*) '*WARNING* - Number of particles/determinants &
                                 &has increased to over 95% of allotted memory on task ', iProcIndex, '. &
                                 &Errors imminent. Increase MEMORYFACPART, or reduce rate of growth.'
            end if
#endif
            call neci_flush(stderr)
        end if

        ! Are ony of the sublists near the end of their alloted space?
        if (nNodes > 1) then
            do i = 0, nNodes-1
                rat = real(ValidSpawnedList(i) - InitialSpawnedSlots(i),dp) /&
                             real(InitialSpawnedSlots(1), dp)
                if (rat > 0.95_dp) then
#ifdef DEBUG_
                    if(tMolpro) then
                        write(stderr, '(a)') '*WARNING* - Highest processor spawned &
                                         &particles has reached over 95% of allotted memory.&
                                         &Errors imminent. Increase MEMORYFACSPAWNED, or reduce spawning rate.'
                    else
                        write(stderr, '(a)') '*WARNING* - Highest processor spawned &
                                         &particles has reached over 95% of allotted memory.&
                                         &Errors imminent. Increase MEMORYFACSPAWN, or reduce spawning rate.'
                    end if
#else
                    if(tMolpro) then
                        write(stderr,*) '*WARNING* - Highest processor spawned &
                                         &particles has reached over 95% of allotted memory on task ',iProcIndex,' .&
                                         &Errors imminent. Increase MEMORYFACSPAWNED, or reduce spawning rate.'
                    else
                        write(stderr,*) '*WARNING* - Highest processor spawned &
                                         &particles has reached over 95% of allotted memory on task ',iProcIndex,' .&
                                         &Errors imminent. Increase MEMORYFACSPAWN, or reduce spawning rate.'
                    end if
#endif
                    call neci_flush(stderr)
                end if
            end do
        else
            rat = real(ValidSpawnedList(0), dp) / real(MaxSpawned, dp)
            if (rat > 0.95_dp) then
#ifdef DEBUG_
                if(tMolpro) then
                    write(stderr, '(a)') '*WARNING* - Highest processor spawned &
                                     &particles has reached over 95% of allotted memory.&
                                     &Errors imminent. Increase MEMORYFACSPAWNED, or reduce spawning rate.'
                else
                    write(stderr, '(a)') '*WARNING* - Highest processor spawned &
                                     &particles has reached over 95% of allotted memory.&
                                     &Errors imminent. Increase MEMORYFACSPAWN, or reduce spawning rate.'
                end if
#else
                if(tMolpro) then
                    write(stderr,*) '*WARNING* - Highest processor spawned &
                                     &particles has reached over 95% of allotted memory on task ',iProcIndex,' .&
                                     &Errors imminent. Increase MEMORYFACSPAWNED, or reduce spawning rate.'
                else
                    write(stderr,*) '*WARNING* - Highest processor spawned &
                                     &particles has reached over 95% of allotted memory on task ',iProcIndex,' .&
                                     &Errors imminent. Increase MEMORYFACSPAWN, or reduce spawning rate.'
                end if
#endif
                call neci_flush(stderr)
            end if
         end if

    end subroutine end_iteration_print_warn