WriteFciMCStatsHeader Subroutine

public subroutine WriteFciMCStatsHeader()

Arguments

None

Contents

Source Code


Source Code

    SUBROUTINE WriteFciMCStatsHeader()
        integer :: j, k, run, offset
        integer(int64) :: i
        character(256) label
        character(32) tchar_r, tchar_i, tchar_j, tchar_k
        character(17) trunc_caption
        character(38) validExCaption

        call getProjEOffset()

        IF(iProcIndex == root) THEN
!Print out initial starting configurations
            write(stdout,*) ""
            IF(tTruncInitiator) THEN
               write(initiatorstats_unit,"(A2,A17,16A23)", advance = 'no') &
                    "# ","1.Step","2.TotWalk","3.Annihil","4.Died", &
                    & "5.Born","6.TotUniqDets",&
                    &               "7.InitDets","8.NonInitDets","9.InitWalks","10.NonInitWalks","11.AbortedWalks", &
                    "12. Removed Dets",  "13. Initiator Proj.E", "14. CoreNonInits"
               offset = 14
               if(tTrialWavefunction .or. tStartTrialLater) then
                  write(initiatorstats_unit,"(A)", advance = 'no') &
                  "15. TrialNumerators (inits)   16. TrialDenom (inits)"
                  offset = 16
               end if
                do k = 1, maxInitExLvlWrite
                   write(tchar_k,*) k+offset
                   write(tchar_r,*) k
                   tchar_r = trim(adjustl(tchar_k))//'. Inits on ex. lvl '//trim(adjustl(tchar_r))
                   write(initiatorstats_unit,'(1x,a)', advance = 'no') &
                        trim(adjustl(tchar_r))
                end do
                write(initiatorstats_unit,'()', advance = 'yes')
            end if
            IF(tLogComplexPops) THEN
                write(complexstats_unit,"(A)") '#   1.Step  2.Shift     3.RealShift     4.ImShift   5.TotParts      " &
                & //"6.RealTotParts      7.ImTotParts'
            end if
            if (tLogEXLEVELStats) then
                write(EXLEVELStats_unit, '(a)', advance='no') '# 1.Step'
                k = 1
                do run = 1, inum_runs
                    tchar_r = ''
                    if (inum_runs>1) then
                        write(tchar_r,*)run
                        tchar_r = '(run='//trim(adjustl(tchar_r))//')'
                    end if
                    do i = 0, 2
                        write(tchar_i,*)i
                        do j = 0, NEl
                            k = k + 1
                            write(tchar_j,*)j
                            write(tchar_k,*)k
                            write(EXLEVELStats_unit, '(1x,a)', &
                                   advance='no') trim(adjustl(tchar_k))// &
                                   &'.W'//trim(adjustl(tchar_j))//'^'// &
                                   trim(adjustl(tchar_i))// &
                                   trim(adjustl(tchar_r))
                        end do ! j
                    end do ! i
                end do ! run
                write(EXLEVELStats_unit, '()', advance='yes')
            end if ! tLogEXLEVELStats

#ifdef CMPLX_
            if(tMCOutput) then
                write(stdout, '(a)') "       Step     Shift      WalkerCng(Re)  &
                       &WalkerCng(Im)    TotWalkers(Re)   TotWalkers(Im)    &
                       &Proj.E(Re)   ProjE(Im)     Proj.E.ThisCyc(Re)  &
                       &Proj.E.ThisCyc(Im)   NoatHF(Re)   NoatHF(Im)   &
                       &NoatDoubs      AccRat     UniqueDets   NumDetsSpawned   IterTime"
            end if
            write(fcimcstats_unit, "(a,i4,a,l1,a,l1,a,l1)") &
                   "# FCIMCStats VERSION 2 - COMPLEX : NEl=", nel, &
                   " HPHF=", tHPHF, ' Lz=', tFixLz, &
                   ' Initiator=', tTruncInitiator
            write(fcimcstats_unit, "(a)", advance = 'no') &
                   "#     1.Step   2.Shift    3.WalkerCng(Re)  &
                   &4.WalkerCng(Im)   5.TotWalkers(Re)  6.TotWalkers(Im)  &
                   &7.Proj.E(Re)   8.Proj.E(Im)   9.Proj.E.ThisCyc(Re)  &
                   &10.Proj.E.ThisCyc(Im)  11.Tot-Proj.E.ThisCyc(Re)  12.NoatHF(Re)  &
                   &13.NoatHF(Im)  14.NoatDoubs  15.AccRat  16.UniqueDets  17.IterTime &
                   &18.FracSpawnFromSing  19.WalkersDiffProc  20.TotImagTime &
                   &  21.HFInstShift  22.TotInstShift  &
                   &23.HFContribtoE(Both)  &
                   &24.NumContribtoE(Re)  &
                   &25.NumContribtoE(Im)  26.HF weight   27.|Psi|    &
                   &28.Inst S^2  29.PartsDiffProc   30.MaxCycSpawn"
! Dongxia comment 28-30 off because they are not printed out
! 28.SpawnedParts  29.MergedParts  30.Zero elems   31.PartsDiffProc   32.MaxCycSpawn"
            if (tTrialWavefunction .or. tStartTrialLater) then
                   write(fcimcstats_unit, "(A)", advance = 'no') &
                   "  31.TrialNumerator(Re)  32.TrialNumerator(Im)  33.TrialDenom(Re)  &
                   &  34.TrialDenom(Im)  35.TrialOverlap  36.TrialProjE(Re)  37.TrialProjE(Im)"
            end if

            write(fcimcstats_unit, "()", advance = 'yes')

#elif defined(DOUBLERUN_)
            write(fcimcstats_unit2, "(a,i4,a,l1,a,l1,a,l1)") &
                  "# FCIMCStats VERSION 2 - REAL : NEl=", nel, &
                  " HPHF=", tHPHF, ' Lz=', tFixLz, &
                  ' Initiator=', tTruncInitiator
            write(fcimcstats_unit2, "(A)", advance = 'no') &
                  "#     1.Step   2.Shift    3.WalkerCng  4.GrowRate     &
                  &5.TotWalkers  6.Annihil  7.NoDied  8.NoBorn  &
                  &9.Proj.E       10.Av.Shift 11.Proj.E.ThisCyc  12.NoatHF &
                  &13.NoatDoubs  14.AccRat  15.UniqueDets  16.IterTime &
                  &17.FracSpawnFromSing  18.WalkersDiffProc  19.TotImagTime  &
                  &20.ProjE.ThisIter  21.HFInstShift  22.TotInstShift  &
                  &23.Tot-Proj.E.ThisCyc   24.HFContribtoE  25.NumContribtoE &
                  &26.HF weight    27.|Psi|     28.Inst S^2 29.Inst S^2 30.AbsProjE &
                  &31.PartsDiffProc    32.|Semistoch|/|Psi|     33.MaxCycSpawn"
           if (tTrialWavefunction .or. tStartTrialLater) then
                  write(fcimcstats_unit2, "(A)", advance = 'no') &
                  "  34.TrialNumerator  35.TrialDenom  36.TrialOverlap"
              trunc_caption = "  37. TruncWeight"
           else
              trunc_caption = "  34. TruncWeight"
           end if
           if(t_truncate_spawns) write(fcimcstats_unit2, "(A)", advance = 'no') &
                trunc_caption

           write(fcimcstats_unit2, "()", advance = 'yes')
#endif
#ifndef CMPLX_
            if(tMCOutput) then
                write(stdout, "(A)", advance = 'no') "        Step    Shift           &
                      &WalkerCng       GrowRate        TotWalkers      Annihil         &
                      &NoDied          NoBorn          Proj.E          Av.Shift        &
                      &Proj.E.Cyc"
                if (tTrialWavefunction .or. tStartTrialLater) write(stdout, "(A)", advance = 'no') &
                      "    Trial.E.Cyc "
                write(stdout, "(A)", advance = 'yes') "      NoatHF          NoatDoubs       &
                &AccRat        UniqueDets    NumDetsSpawned   IterTime"
            end if
            write(fcimcstats_unit, "(a,i4,a,l1,a,l1,a,l1)") &
                  "# FCIMCStats VERSION 2 - REAL : NEl=", nel, &
                  " HPHF=", tHPHF, ' Lz=', tFixLz, &
                  ' Initiator=', tTruncInitiator
            write(fcimcstats_unit, "(A)", advance = 'no') &
                  "#     1.Step   2.Shift    3.WalkerCng  4.GrowRate     &
                  &5.TotWalkers  6.Annihil  7.NoDied  8.NoBorn  &
                  &9.Proj.E       10.Av.Shift 11.Proj.E.ThisCyc  12.NoatHF &
                  &13.NoatDoubs  14.AccRat  15.UniqueDets  16.IterTime &
                  &17.FracSpawnFromSing  18.WalkersDiffProc  19.TotImagTime  &
                  &20.ProjE.ThisIter  21.HFInstShift  22.TotInstShift  &
                  &23.Tot-Proj.E.ThisCyc   24.HFContribtoE  25.NumContribtoE &
                  &26.HF weight    27.|Psi|     28.Inst S^2 &
                  &29.Inst S^2   30.AbsProjE   31.PartsDiffProc &
                  &32.|Semistoch|/|Psi|  33.MaxCycSpawn "
           if (tTrialWavefunction .or. tStartTrialLater) then
              write(fcimcstats_unit, "(A)", advance = 'no') &
                   "  34.TrialNumerator  35.TrialDenom  36.TrialOverlap"
              validExCaption = "  37.InvalidExcits  38. ValidExcits  "
              trunc_caption = "  39. TruncWeight"
           else
              trunc_caption = "  36. TruncWeight"
              validExCaption = "  34.InvalidExcits  35. ValidExcits  "
           end if
           write(fcimcstats_unit, "(A)", advance = 'no') validExCaption
           if(t_truncate_spawns) write(fcimcstats_unit, "(A)", advance = 'no') &
                trunc_caption

           write(fcimcstats_unit, "()", advance = 'yes')

#endif

        end if

    END SUBROUTINE WriteFciMCStatsHeader