IntegralsData.F90 Source File


Contents

Source Code


Source Code

module IntegralsData

    use constants, only: dp, MPIArg
    use MemoryManager, only: TagIntType

    IMPLICIT NONE
    save

    LOGICAL :: TQUADRHO, TEXPRHO, THFBASIS, THFCALC, TCALCREALPROD
    LOGICAL :: TRHF, TReadTUMat, TReadHF, TQuadValMax, TQuadVecMax
    LOGICAL :: TSUMPROD, TCALCRHOPROD, TDISCONODES, TCalcExcitStar
    LOGICAL :: TJustQuads, TNoDoubs, TDiagStarStars, TExcitStarsRootChange
    LOGICAL :: TRmRootExcitStarsRootChange, TLinRootChange, tPartFreezeCore, tPartFreezeVirt

    INTEGER :: NTAY(2), nHFit, NFROZEN, NTFROZEN, NFROZENIN, NTFROZENIN
    INTEGER :: NRSTEPSMAX, IHFMETHOD
    INTEGER :: NPartFrozen, NHolesFrozen, NVirtPartFrozen, NElVirtFrozen

    real(dp) :: NRCONV, RFCONV, OrbOrder2(8)
    real(dp) :: HFMix, HFEDelta, HFCDelta
    real(dp) :: HFRand
    real(dp) :: DMatEpsilon !  The cutoff for density matrix elements
    Logical :: tPostFreezeHF ! Do we do HF after freezing
    logical :: tDumpFCIDUMP !Do we write out an FCIDUMP file (after freezing)

    ! Flag to indicate usage of the external TCHINT library for st-FCIQMC
    logical :: t_use_tchint_lib = .false.
    character(50) :: tchint_mode
!  From NECI.F
! UMAT stores 4-index, 2-electron integrals.  Lookup is via the UMATIND function
! (in the UMatCache module).
! Warning! It is best (ie only safe) to access 4-index integrals via the
! get_umat_el function.  This enables the appropriate transformations, complex
! conjugations and storage implementations (eg with UMAT2D/UMatCache/etc) to be
! used as appropriate.
    HElement_t(dp), pointer :: UMAT(:)
    INTEGER(MPIArg) :: umat_win
    INTEGER(TagIntType) :: tagUMat = 0
    COMPLEX(dp), pointer :: FCK(:) => null()
    INTEGER(TagIntType) :: tagFCK = 0
    INTEGER :: NMAX
    real(dp) :: CST

! from Calc
    real(dp) :: ChemPot
! Set if we need virtual orbitals  (usually set).  Will be unset (by Calc readinput) if I_VMAX=1 and TENERGY is false
    Logical :: tNeedsVirts

    logical :: t_rs_factors = .false.
    ! hash the lmat calc routine. True by default, turn of if big calcs crash
    logical :: t_hash_lmat_calc = .true.
! Details to permit reversing freezing for convenience.
    integer :: nel_pre_freezing
    integer, allocatable :: frozen_orb_list(:), frozen_orb_reverse_map(:)
    integer(TagIntType) :: tagFrozen = 0, tagFrozenMap = 0

end module IntegralsData