tau_main Module


Used by


Contents


Variables

Type Visibility Attributes Name Initial
real(kind=dp), protected :: tau = 0._dp

The time-step itself

type(PossibleTauSearchMethods_t), public, parameter :: possible_tau_search_methods = PossibleTauSearchMethods_t()
type(TauSearchMethod_t), public :: tau_search_method = possible_tau_search_methods%OFF
type(TauSearchMethod_t), public, allocatable :: input_tau_search_method
type(PossibleStopMethods_t), public, parameter :: possible_tau_stop_methods = PossibleStopMethods_t()
type(StopMethod_t), public :: tau_stop_method = possible_tau_stop_methods%var_shift
type(TauSearchData_t), private :: search_data
type(StopOptions_t), public :: stop_options
type(PossibleStartValTau_t), public, parameter :: possible_tau_start = PossibleStartValTau_t()
type(TauStartVal_t), public, allocatable :: tau_start_val
real(kind=dp), public :: min_tau = 0._dp
real(kind=dp), public :: max_tau = huge(max_tau)
real(kind=dp), public :: taufactor = 0._dp
logical, public :: scale_tau_to_death_triggered = .false.
logical, public :: t_scale_tau_to_death = .false.
real(kind=dp), public :: max_death_cpt = 0._dp
real(kind=dp), public :: MaxWalkerBloom

Scaling factor of tau. Determines the maximum allowed spawns, for the known determinants.

logical, public :: readpops_but_tau_not_from_popsfile = .false.

Interfaces

interface

interface

interface

  • public module subroutine stop_tau_search(stop_method)

    Arguments

    Type IntentOptional Attributes Name
    type(StopMethod_t), intent(in) :: stop_method

interface


Derived Types

type, public, extends(EnumBase_t) ::  TauSearchMethod_t

Components

Type Visibility Attributes Name Initial
integer, public :: val
character(len=20), public :: str

Type-Bound Procedures

generic, public :: operator(==) => eq_EnumBase_t
generic, public :: operator(/=) => neq_EnumBase_t

type, private ::  PossibleTauSearchMethods_t

Components

Type Visibility Attributes Name Initial
type(TauSearchMethod_t), public :: OFF = TauSearchMethod_t(1, 'Off')
type(TauSearchMethod_t), public :: CONVENTIONAL = TauSearchMethod_t(2, 'Conventional')
type(TauSearchMethod_t), public :: HISTOGRAMMING = TauSearchMethod_t(3, 'Histogramming')

type, private, extends(EnumBase_t) ::  StopMethod_t

Components

Type Visibility Attributes Name Initial
integer, public :: val
character(len=45), public :: str

Type-Bound Procedures

generic, public :: operator(==) => eq_EnumBase_t
generic, public :: operator(/=) => neq_EnumBase_t

type, private ::  PossibleStopMethods_t

Components

Type Visibility Attributes Name Initial
type(StopMethod_t), public :: var_shift = StopMethod_t(1, 'Variable Shift reached')
type(StopMethod_t), public :: max_iter = StopMethod_t(2, 'n-th iteration reached')
type(StopMethod_t), public :: max_eq_iter = StopMethod_t(3, 'n-th iteration after variable shift reached')
type(StopMethod_t), public :: no_change = StopMethod_t(4, 'n iterations without change of tau')
type(StopMethod_t), public :: n_opts = StopMethod_t(5, 'n optimizations of tau')
type(StopMethod_t), public :: changevars = StopMethod_t(6, 'Manual change via `CHANGEVARS` file')
type(StopMethod_t), public :: off = StopMethod_t(7, 'Off')

type, private ::  TauSearchData_t

Components

Type Visibility Attributes Name Initial
integer, public :: last_change_of_tau = 0

At which iteration was tau changed last?

integer, public :: n_opts = 0

How often was tau changed?

type, private ::  StopOptions_t

Components

Type Visibility Attributes Name Initial
integer, public :: max_iter = huge(0)

Number of iterations, after which we stop searching.

integer, public :: max_eq_iter = huge(0)

Number of iterations after reaching variable shift mode, after which we stop searching.

integer, public :: max_iter_without_change = huge(0)

Number of iterations without a change of tau, after which we stop searching.

integer, public :: max_n_opts = huge(0)

Number of optimizations of tau, after which we stop searching

type, private, extends(EnumBase_t) ::  TauStartVal_t

Components

Type Visibility Attributes Name Initial
integer, public :: val
character(len=40), public :: str

Type-Bound Procedures

generic, public :: operator(==) => eq_EnumBase_t
generic, public :: operator(/=) => neq_EnumBase_t

type, private ::  PossibleStartValTau_t

Components

Type Visibility Attributes Name Initial
type(TauStartVal_t), public :: user_given = TauStartVal_t(1, 'User defined')
type(TauStartVal_t), public :: tau_factor = TauStartVal_t(2, 'Tau factor')
type(TauStartVal_t), public :: from_popsfile = TauStartVal_t(3, 'Popsfile')
type(TauStartVal_t), public :: refdet_connections = TauStartVal_t(4, 'Reference determinant connections')
type(TauStartVal_t), public :: deterministic = TauStartVal_t(5, 'Deterministic')
type(TauStartVal_t), public :: not_needed = TauStartVal_t(6, 'Not required')

Functions

public elemental function end_of_search_reached(curr_tau_search_method, stop_method) result(res)

Arguments

Type IntentOptional Attributes Name
type(TauSearchMethod_t), intent(in) :: curr_tau_search_method
type(StopMethod_t), intent(in) :: stop_method

Return Value logical

private elemental function large_change(old_tau, new_tau) result(res)

If the change of old_tau to new_tau is considered large.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: old_tau
real(kind=dp), intent(in) :: new_tau

Return Value logical


Subroutines

public subroutine scale_tau_to_death()

Arguments

None

public subroutine log_death_magnitude(mult)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: mult

public subroutine assign_value_to_tau(new_tau, reason)

Assign new_tau to tau

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: new_tau
character(len=*), intent(in) :: reason

Message that gets printed when change was sufficiently large.