setup_adi Subroutine

public subroutine setup_adi()

Arguments

None

Contents

Source Code


Source Code

    subroutine setup_adi()
        ! We initialize the flags for the adi feature
        use adi_data, only: tSetDelayAllDoubsInits, tDelayAllDoubsInits, &
                            tAllDoubsInitiators, tDelayGetRefs, &
                            tReadRefs, maxNRefs, SIUpdateOffset
        use adi_references, only: enable_adi, reallocate_ilutRefAdi, &
                                  reset_coherence_counter
        implicit none
        call reallocate_ilutRefAdi(maxNRefs)

        ! If using adi with dynamic SIs, also use a dynamic corespace by default
        call setup_dynamic_core()

        ! Check if one of the keywords is specified as delayed
        if (tSetDelayAllDoubsInits .and. tAllDoubsInitiators) then
            tAllDoubsInitiators = .false.
            tDelayAllDoubsInits = .true.
        end if

        ! Check if we want to get the references right away
        if (.not. (tReadRefs .or. tReadPops)) tDelayGetRefs = .true.
        if (tDelayAllDoubsInits) tDelayGetRefs = .true.
        ! Give a status message
        if (tAllDoubsInitiators) then
            call enable_adi()
            tAdiActive = .true.
        end if

        ! there is a minimum cycle lenght for updating the number of SIs, as the reference population
        ! needs some time to equilibrate
        nRefUpdateInterval = max(SIUpdateInterval, 500)
        SIUpdateOffset = 0

        ! Initialize the logging variables
        call reset_coherence_counter()
    end subroutine setup_adi