API
Rimu
Rimu.Rimu — ModuleRimuRandom Integrator for Many-Body Quantum Systems
Rimu.ConstantTimeStep — TypeKeep dτ constant.
Rimu.DelayedLogUpdate — TypeDelayedLogUpdate(ζ = 0.3, a = 10) <: ShiftStrategyStrategy for updating the shift according to the log formula with damping parameter ζ and delay of a steps.
Rimu.DelayedLogUpdateAfterTargetWalkers — TypeDelayedLogUpdateAfterTargetWalkers(targetwalkers, ζ = 0.3, a = 10) <: ShiftStrategyStrategy for updating the shift: After targetwalkers is reached, update the shift according to the log formula with damping parameter ζ and delay of a steps. See DelayedLogUpdate.
Rimu.DeltaMemory — TypeDeltaMemory(Δ::Int) <: MemoryStrategyBefore updating the shift, memory noise with a memory length of Δ is applied, where Δ = 1 means no memory noise.
r̃ = (pnorm - tnorm)/(dτ*pnorm) + shift
r = r̃ - <r̃>Rimu.DontUpdate — TypeDontUpdate() <: ShiftStrategy Don't update the shift.
Rimu.DoubleLogUpdate — TypeDoubleLogUpdate(targetwalkers, ζ = 0.3, ξ = 0.0225) <: ShiftStrategyStrategy for updating the shift according to the log formula with damping parameter ζ and ξ.
Rimu.DoubleLogUpdateAfterTargetWalkers — TypeLogUpdateAfterTargetWalkers(targetwalkers, ζ = 0.3, ξ = 0.0225) <: ShiftStrategyStrategy for updating the shift: After targetwalkers is reached, update the shift according to the log formula with damping parameter ζ and ξ. See DoubleLogUpdate.
Rimu.DoubleLogUpdateAfterTargetWalkersSwitch — TypeLogUpdateAfterTargetWalkersSwitch(targetwalkers, ζ = 0.3, ξ = 0.0225) <: ShiftStrategyStrategy for updating the shift: After targetwalkers is reached, update the shift according to the log formula with damping parameter ζ and ξ. After a steps the strategy swiches to LogUpdate. See DoubleLogUpdate.
Rimu.EveryKthStep — TypeEveryKthStep(;k = 10)Report every kth step.
Rimu.EveryTimeStep — TypeReport every time step.
Rimu.FciqmcRunStrategy — TypeAbstract type representing the strategy for running and terminating fciqmc!(). Implemented strategies:
Rimu.HistoryLogUpdate — TypeHistoryLogUpdate(df::DataFrame; d = 100, k=1, ζ= 0.3)Strategy for updating the shift according to log formula but with walker numbers accumulated from k samples of the history with delay d. A recent history has to be passed with the data frame df for initialisation.
Rimu.IsStochasticWithThreshold — TypeIsStochasticWithThreshold(threshold::Float16)Trait for generalised vector of configurations indicating stochastic propagation with real walker numbers and cutoff threshold.
> StochasticStyle(V) = IsStochasticWithThreshold(threshold)During stochastic propoagation, walker numbers small than threshold will be stochastically projected to either zero or threshold.
Rimu.LogUpdate — TypeLogUpdate(ζ = 0.3) <: ShiftStrategyStrategy for updating the shift according to the log formula with damping parameter ζ.
Rimu.LogUpdateAfterTargetWalkers — TypeLogUpdateAfterTargetWalkers(targetwalkers, ζ = 0.3) <: ShiftStrategyStrategy for updating the shift: After targetwalkers is reached, update the shift according to the log formula with damping parameter ζ. See LogUpdate.
Rimu.MPIData — TypeSimple wrapper used for signaling that this data is part of a distributed data structure and communication should happen with MPI.
Rimu.MPIDefault — TypeMPIDefault(nprocs, my_rank, comm)Strategy for point-to-point MPI communication.
Rimu.MPIOSWin — TypeMPIOSWin(nprocs, myrank, comm, ::Type{T}, capacity)Communication buffer for use with MPI one-sided communication (remote memory access). Up to capacity elements of type T can be exchanged between MPI ranks via put. It is important that isbitstype(T) == true. Objects of type MPIOSWin have to be freed manually with a (blocking) call to free().
Rimu.MemoryStrategy — TypeAbstract type for defining the strategy for injectimg memory noise. Implemented strategies:
Rimu.NoMemory — TypeNoMemory <: MemoryStrategyDefault strategy for MemoryStrategy indicating that no memory noise will be used.
Rimu.NoProjection — TypeDo not project the walker amplitudes. See norm_project.
Rimu.OvershootControl — TypeSlow down/Speed up dτ to control the psips overshoot.
Rimu.ProjectStrategy — TypeAbstract type for defining the stategy of projection for fciqmc with floating point walker number with norm_project. Implemented stategies:
Rimu.ReportDFAndInfo — TypeReportDFAndInfo(; k=10, i=100, io=stdout, writeinfo=true)Report every kth step in DataFrame and write info message to io every ith step (unless writeinfo == false). The flag writeinfo is useful for controlling info messages in MPI codes.
Rimu.ReportingStrategy — TypeAbstract type for strategies for reporting data in a DataFrame with report!(). Implemented strategies:
Rimu.RunTillLastStep — TypeRunTillLastStep(step::Int = 0 # number of current/starting timestep
laststep::Int = 50 # number of final timestep
shiftMode::Bool = false # whether to adjust shift
shift::Float64 = 0.0 # starting/current value of shift
dτ::Float64 = 0.01 # current value of time step
) <: FciqmcRunStrategyParameters for running fciqmc!() for a fixed number of time steps. For alternative strategies, see FciqmcRunStrategy.
Rimu.ScaledThresholdProject — TypeScaledThresholdProject(threshold = 1.0) <: ProjectStrategyProject stochastically for walker amplitudes below threshold and scale configuration array as to keep the norm constant. As a consequence, the final configuration amplitudes may be smaller than threshold. See norm_project.
Rimu.ShiftMemory — TypeShiftMemory(Δ::Int) <: MemoryStrategyEffectively replaces the fluctuating shift update procedure for the coefficient vector by an averaged shift over Δ timesteps, where Δ = 1 means no averaging.
Rimu.StochasticStyle — TypeStochasticStyle(v)
StochasticStyle(typeof(v))StochasticStyle specifies the native style of the generalised vector v that determines how simulations are to proceed. This can be fully stochastic (with IsStochastic), fully deterministic (with IsDeterministic), or semistochastic (with IsSemistochastic).
Rimu.ThresholdProject — TypeThresholdProject(threshold = 1.0) <: ProjectStrategyProject stochastically for walker amplitudes below threshold. See norm_project.
Rimu.TimeStepStrategy — TypeAbstract type for strategies for updating the time step with update_dτ(). Implemented strategies:
Rimu.fciqmc! — Functionfciqmc!(v, pa::FciqmcRunStrategy, [df,]
ham, s_strat::ShiftStrategy,
[r_strat::ReportingStrategy, τ_strat::TimeStepStrategy, w])
-> dfPerform the FCIQMC algorithm for determining the lowest eigenvalue of ham. v can be a single starting vector of type :<AbstractDVec or a vector of such structures. In the latter case, independent replicas are constructed. Returns a DataFrame df with statistics about the run, or a tuple of DataFrames for a replica run. Strategies can be given for updating the shift (see ShiftStrategy) and (optionally), for reporting (see ReportingStrategy), and for updating the time step dτ (see TimeStepStrategy).
A pre-allocated data structure w for working memory can be passed as argument, and controls multi-threading behaviour. By default multi-threading is turned on. To turn multi-threading off, pass similar(localpart(v)) for w.
This function mutates v, the parameter struct pa as well as df, and w.
Rimu.free — Methodfree(obj::MPIOSWin)De-reference the object, call finalizer and the garbage collector immediately. This is a syncronizing MPI call. Make sure that the object is not used later.
Rimu.greet — Methodbrief greeting
Rimu.mpi_default — Functionmpi_default(data, comm = MPI.COMM_WORLD, root = 0)Declare data as mpi-distributed and set communication strategy to default. Sets up the MPIData structure with MPIDefault strategy.
Rimu.mpi_no_exchange — Functionmpi_no_exchange(data, comm = MPI.COMM_WORLD, root = 0)Declare data as mpi-distributed and set communication strategy to MPINoWalkerExchange. Sets up the MPIData structure with MPINoWalkerExchange strategy.
Rimu.mpi_one_sided — Functionmpi_one_sided(data, comm = MPI.COMM_WORLD, root = 0)Declare data as mpi-distributed and set communication strategy to one-sided with remote memory access (RMA). Sets up the MPIData structure with MPIOSWin strategy.
Rimu.put — Methodput(buf::Vector{T}, [len,] targetrank, s::MPIOSWin{T})
put(obj::T, targetrank, s::MPIOSWin{T})Deposit a single obj or vector buf into the MPI window s on rank targetrank. If len is given, only the first len elements are transmitted.
Rimu.targetrank — Functiontargetrank(key, np, hash = hash(key))Compute the rank where the key belongs.
Rimu.DeltaMemory2 — TypeDeltaMemory2(Δ::Int) <: MemoryStrategyBefore updating the shift, memory noise with a memory length of Δ is applied, where Δ = 1 means no memory noise.
r̃ = pnorm - tnorm + shift*dτ*pnorm
r = (r̃ - <r̃>)/(dτ*pnorm)The long-term average of r is not guaranteed to be zero.
Rimu.IsSemistochastic — TypeIsSemistochastic(threshold::Float16, d_space)Trait for generalised vector of configurations indicating semistochastic propagation. Set with setSemistochastic!.
> StochasticStyle(V) = IsSemistochastic(threshold, d_space)where d_space is a vector of addresses defining the the stochastic subspace.
Rimu.MPINoWalkerExchange — TypeMPINoWalkerExchange(nprocs, my_rank, comm)Strategy for for not exchanging walkers between ranks. Consequently there will be no cross-rank annihilations.
Rimu.ShiftStrategy — TypeAbstract type for defining the strategy for updating the shift with update_shift(). Implemented strategies:
Base.length — Methodlength(md::MPIData)Compute the length of the distributed data on every MPI rank with MPI.Allreduce.
LinearAlgebra.norm — Functionnorm(md::MPIData, p=2)Compute the norm of the distributed data on every MPI rank with MPI.Allreduce.
Rimu.applyMemoryNoise! — MethodapplyMemoryNoise!(w, v, shift, dτ, pnorm, m_strat::MemoryStrategy)Apply memory noise to w according to the strategy m_strat. Note that the strategy needs to be compatible with StochasticStyle(w). The default is to not add memory noise. See MemoryStrategy.
w is the walker array after fciqmc step, v the previous one, pnorm the norm of v.
Rimu.clearDFlags! — MethodclearDFlags!(dv)Clear all flags in dv of the deterministic bit (rightmost bit).
Rimu.fciqmc_col! — Methodfciqmc_col!(w, ham, add, num, shift, dτ)
fciqmc_col!(::Type{T}, args...)
-> spawns, deaths, clones, antiparticles, annihilationsSpawning and diagonal step of FCIQMC for single column of ham. In essence it computes
w .+= (1 .+ dτ.*(shift .- ham[:,add])).*num.
Depending on T ==StochasticStyle(w), a stochastic or deterministic algorithm will be chosen. The possible values for T are:
IsDeterministic()deteministic algorithmIsStochastic()stochastic version where the changes added toware purely integer, according to the FCIQMC algorithmIsStochasticNonlinear(c)stochastic algorithm with nonlinear diagonalIsSemistochastic()semistochastic version: TODO
Rimu.fciqmc_step! — Methodfciqmc_step!(Ĥ, v, shift, dτ, pnorm, w;
m_strat::MemoryStrategy = NoMemory()) -> ṽ, w̃, statsPerform a single matrix(/operator)-vector multiplication:
where Ĥ == ham and S == shift. Whether the operation is performed in stochastic, semistochastic, or determistic way is controlled by the trait StochasticStyle(w). See StochasticStyle. w is a local data structure with the same size and type as v and used for working. Both v and w are modified.
Returns the result ṽ, a (possibly changed) reference to working memory w̃, and the array stats = [spawns, deaths, clones, antiparticles, annihilations]. Stats will contain zeros when running in deterministic mode.
Rimu.next_mpiID — Functionnext_mpiID()Produce a new ID number for MPI distributed objects. Uses an internal counter.
Rimu.norm_project! — Methodnorm_project!(w, p_strat::ProjectStrategy) -> normComputes the 1-norm of w. Project all elements of w to s.threshold preserving the sign if StochasticStyle(w) requires projection according to p_strat. See ProjectStrategy.
Rimu.report! — Methodreport!(df::DataFrame, t::Tuple, s<:ReportingStrategy)Record results in df and write informational messages according to strategy s. See ReportingStrategy.
Rimu.setSemistochastic! — MethodsetSemistochastic!(dv, threshold::Float16, d_space)Set the deterministic space for dv with threshold threshold, where d_space is a vector of addresses defining the the stochastic subspace.
Rimu.sort_into_targets! — Methodsort_into_targets!(target, source, stats) -> agg, wm, agg_statsAggregate coefficients from source to agg and from stats to agg_stats according to thread- or MPI-level parallelism. wm passes back a reference to working memory.
Rimu.sort_into_targets! — Methodsort_into_targets!(target::MPIData, source)Distribute the entries of source to the target data structure such that all entries in the target dictionaries are on the process with the correct rank as controlled by targetrank().
Rimu.update_dτ — Methodupdate_dτ(s<:TimeStepStrategy, dτ, args...) -> new dτUpdate the time step according to the strategy s.
Rimu.update_shift — Methodupdate_shift(s <: ShiftStrategy, shift, shiftMode, tnorm, pnorm, dτ, step, df)Update the shift according to strategy s. See ShiftStrategy.
Reexported Submodules
Hamiltonians
Link to Module Hamiltionians.jl
BitStringAddresses
Rimu.BitStringAddresses.BSAdd128 — TypeBSAdd128 <: BitStringAddressTypeAddress type that encodes a bistring address in a UInt128.
Rimu.BitStringAddresses.BSAdd64 — TypeBSAdd64 <: BitStringAddressTypeAddress type that encodes a bistring address in a UInt64.
Rimu.BitStringAddresses.BStringAdd — TypeBStringAdd <: BitStringAddressTypeAddress type that encodes a bistring address in a one-dim. BitArray.
Rimu.BitStringAddresses.BitAdd — TypeBitAdd{I,B} <: BitStringAddressType
BitAdd(address::Integer, B)
BitAdd(chunks::T, B) where T<:Union{Tuple,SVector}
BitAdd{B}(address)Address type that encodes a bistring address with B bits. The bits are stored efficiently as SVector of I chunks of type UInt64. The two-argument constructor is preferred due to safety (consistency checks). In hot loops there maybe gain from the (unsafe) parametric constructor. If an integer address is passed, its bit representation is used to initialize BitAdd. For large bit numbers, BigInt is convenient. BitAdd[i] will return bit i (as Bool), counting from right to left.
BitAdd{B}()creates aBitAddwith all ones.zero(BitAdd{B})creates aBitAddwith all zeros.
Note that no checking for ghost bits occurs when constructing BitAdd from SVector or Tuple. See bitadd(), check_consistency(), and remove_ghost_bits() methods!
Rimu.BitStringAddresses.BitStringAddressType — TypeBitStringAddressTypeAbstract type for configuration addresses with the nature of a bitstring. A number of methods need to be implemented, in particular Base.isless(a,b), numBits(), numChunks().
Rimu.BitStringAddresses.BoseFS — TypeBoseFS{N,M,A} <: BosonicFockStateAddress <: BitStringAddressType
BoseFS(bs::A) where A <: BitAdd
BoseFS(bs::A, b)Address type that represents a Fock state of N spinless bosons in M orbitals by wrapping a bitstring of type A. Orbitals are stored in reverse order, i.e. the first orbital in a BoseFS is stored rightmost in the bitstring bs. If the number of significant bits b is not encoded in A it must be passed as an argument (e.g. for BSAdd64 and BSAdd128).
Rimu.BitStringAddresses.BoseFS — MethodBoseFS(onr::T) where T<:Union{AbstractVector,Tuple}
BoseFS{BST}(onr::T)Create BoseFS address from an occupation number representation, specifying the occupation number of each orbital. If a type BST is given it will define the underlying bit string type. Otherwise, the bit string type is chosen to fit the onr.
Rimu.BitStringAddresses.bitaddr — Methodbitaddr(onr, Type)Calculate a bitstring address from an occupation number representation the type of the bitstring address is passed as the second argument.
Rimu.BitStringAddresses.nearUniform — MethodnearUniform(N, M) -> onr::SVector{M,Int}Create occupation number representation onr distributing N particles in M modes in a close-to-uniform fashion with each orbital filled with at least N ÷ M particles and at most with N ÷ M + 1 particles.
Rimu.BitStringAddresses.nearUniform — MethodnearUniform(BoseFS{N,M})
nearUniform(BoseFS{N,M,A}) -> bfs::BoseFS{N,M,A}Create bosonic Fock state with near uniform occupation number of M modes with a total of N particles. Specifying the bit address type A is optional.
Examples
julia> nearUniform(BoseFS{7,5,BitAdd})
BoseFS{BitAdd}((2,2,1,1,1))
julia> nearUniform(BoseFS{7,5})
BoseFS{BSAdd64}((2,2,1,1,1))Rimu.BitStringAddresses.numBits — MethodnumBits(a)Number of bit chunks representing a.
Rimu.BitStringAddresses.numChunks — MethodnumChunks(a)Number of 64-bit chunks representing a.
Rimu.BitStringAddresses.numModes — MethodnumModes(a)Number of modes represented by a.
Rimu.BitStringAddresses.numParticles — MethodnumParticles(a)Number of particles represented by a.
Rimu.BitStringAddresses.onr — Methodonr(address, m)Compute and return the occupation number representation as an array of Int corresponding to the given address.
Rimu.BitStringAddresses.onr — Methodonr(bs)Compute and return the occupation number representation of the bit string address bs as an SVector{M,Int}, where M is the number of orbitals.
Rimu.BitStringAddresses.BosonicFockStateAddress — TypeBosonicFockStateAddress <: BitStringAddressTypeSupertype representing a bosonic Fock state. Implement numModes() and numParticles().
Base.:<< — Method<<(b::BitAdd,n::Integer)Bitshift b to the left by n bits and fill from the right with zeros.
Base.:>>> — Method>>>(b::BitAdd,n::Integer)Bitshift b to the right by n bits and fill from the left with zeros.
Rimu.BitStringAddresses.lbshr — Methodlbshr(c,k)Apply logical bit shift to the right by k bits to c.
Rimu.BitStringAddresses.remove_ghost_bits — Methodremove_ghost_bits(bs)Remove set bits outside data field if any are present.
DictVectors
Rimu.DictVectors — ModuleModule that provides data structures that behave similar to sparse vectors, but are indexed by arbitrary types (could be non-integers) similarly to dictionaries. The idea is to do linear algebra with data structures that are neither subtyped to AbstractVector nor to AbstractDict and are suitable for use with KrylovKit.jl. For this, the abstract type and interface AbstractDVec is provided, with the following concrete subtypes:
Rimu.DictVectors.AbstractDVec — TypeDictVectors.AbstractDVec{K,V}Abstract type for sparse vectors with valtype() V based on dictionary-like structures. They behave like vectors except that indexing is performed with an arbitrary keytype() K (no order required). getindex() returns zero(V) for any unknown key and zeroed elements should be deleted with delete!(). Thus, iteration typically returns only non-zero entries. In variance to AbstractVector, length() will return the number of non-zero elements, while capacity() returns the holding capacity (assumed fixed) of the object. Even though AbstractDVec is similar to both AbstractDict and AbstractVector, it is explicitly not subtyped to either. The aim is to create data structures suitable for FCIQMC and compatible with KrylovKit.jl.
Interface
The interface is similar to the AbstractDict interface. Implement what would be needed for the AbstractDict interface (setindex!, getindex, delete!, length, haskey, empty!, isempty) and, in addition:
capacity(dv): holding capacitysimilar(dv [,Type])iterate(): should return values of typeVpairs(): should return an iterator overkey::K => contentpairs. Ifcontent ≠ value::Vthe providevalues()iterator as well!
Rimu.DictVectors.DFVec — TypeDFVec{K,V,F}(capacity) <: AbstractDVec{K,V <: Number}
DFVec(d::Dict [, capacity])
DFVec(v::Vector{V} [, capacity])Construct a wrapped dictionary with minimum capacity capacity to represent a vector-like object with valtype(dv) == V. The value of the Dict are of type Tuple{V,F}, which allows for storing a flag of type F for each entry. Indexing is done with an arbitrary (in general non-integer) keytype(dv) == K. When constructed from a Vector{V}, the keys will be integers ∈ [1, length(v)] and the flag zero(UInt16). See AbstractDVec. The method capacity() is defined but not a strict upper limit as Dict objects can expand.
Rimu.DictVectors.DVec — TypeDVec{K,T}(capacity) <: AbstractDVec{K,T}
DVec(d::Dict [, capacity])
DVec(v::Vector{T} [, capacity])Construct a wrapped dictionary with minimum capacity capacity to represent a vector-like object with eltype(dv) == T, which corresponds to the values of the Dict. Indexing is done with an arbitrary (in general non-integer) keytype(dv) == K. When constructed from a Vector, the keys will be integers ∈ [0, length(v)]. See AbstractDVec. The method capacity() is defined but not a strict upper limit as Dict objects can expand.
Rimu.DictVectors.FastDVec — TypeDictVectors.FastDVec{K,V}(capacity)Create a dictionary-like array indexed by keys of type K and values of type V with a maximum capacity of capacity.
FastDVec(a::AbstractArray, [capacity = length(a)])
FastDVec(d::AbstractDict{K,V}, [capacity = length(d)])
FastDVec(d::AbstractDVec{K,V}, [capacity = length(d)])Construct a FastDVec object from an existing array or dictionary.
Rimu.DictVectors.NormProjector — TypeNormProjector()Results in computing the one-norm when used in dot(). E.g.
dot(NormProjector(),x)
-> norm(x,1) # with type valtype(x)NormProjector() thus represents the vector sign.(x).
Rimu.DictVectors.UniformProjector — TypeUniformProjector()Represents a vector with all elements 1. To be used with dot(). Minimizes memory allocations.
UniformProjector()⋅v == sum(v)
dot(UniformProjector(), LO, v) == sum(LO*v)Rimu.DictVectors.add! — Methodadd!(x::AbstractDVec,y::AbstactDVec)Inplace add x+y and store result in x.
Rimu.DictVectors.capacity — FunctionDictVectors.capacity(dv::AbstractDVec, [s = :effective])
capacity(dvs::Tuple, [s = :effective])gives the effective holding capacity of dv. If a tuple of dvs is given it aggregates the capacities.
Optional argument s:
:effectivethe number of elements that
can be stored savely (default)
:allocatedactual internal memory allocation
Rimu.DictVectors.flags — Methodflags(dv::DFVec)An iterator that yields flags stored in the DFVec dv.
Rimu.DictVectors.gettuple — Methodgettuple(dv::DFVec, key)Retrieve the tuple (v,f) stored at the given key. If the key is not found, return a tuple of zeros.
Rimu.DictVectors.kvpairs — Methodkvpairs(collection)Return an iterator over key => value pairs ignoring any flags. If no flags are present, eg. for generic AbstractDVec, this falls back to Base.pairs.
Rimu.DictVectors.kvpairs — Methodkvpairs(dv::DFVec)An iterator that yields key => value pairs stored in the DFVec dv ignoring any flags. In contrast, Base.pairs() will return pairs key => (value, flag).
Rimu.DictVectors.pairtype — Methodpairtype(dv)Returns the type of stored data, as returned by the pairs() iterator.
Rimu.DictVectors.tuples — Methodtuples(dv::DFVec)An iterator that yields tuples (v, f) with value v and flag f stored in the DFVec dv.
Rimu.DictVectors.zero! — Methodzero!(v::AbstractDVec)Replace v by a zero vector as an inplace operation. For AbstractDVec types it means removing all non-zero elements.
Rimu.DictVectors.ADVPairsIterator — TypeADVPairsIteratorIterator type for pairs from a AbstractDVec.
Rimu.DictVectors.FlagsIterator — TypeFlagsIteratorIterator type returned by flags().
Rimu.DictVectors.KVPairsIterator — TypeKVPairsIteratorIterator type returned by kvpairs().
Base.fill! — Methodfill!(da::AbstractDVec, x)Empties da if x==zero(valtype(da)) and throws an error otherwise.
Base.get — Methodget(dv::DFVec, key, deftup::Tuple)Return tuple containing value and flag if key exists and otherwise deftup.
Base.get — Methodget(dv::DFVec, key, defnum::Number)Return value only if key exists and otherwise defnum
Base.isequal — Methodisequal(l::AbstractDVec, r::AbstractDVec)Returns true if all non-zero entries have the same value. Equality of flags is not tested unless both l and r support flags.
Base.isequal — Methodisequal(l::DFVec, r::DFVec)Returns true if all non-zero entries have the same value and the same flag.
LinearAlgebra.axpy! — Methodaxpy!(α::Number, X::AbstractDVec, Y::AbstractDVec)
axpy!(α::Number, X::AbstractDVec, Ys::Tuple, batchsize)Overwrite Y with α*X + Y where α is scalar for AbstractDVecs. If a tuple Ys is passed with Threads.nthreads() AbstractDVecs, then perform the operation in parallel over threads with batchsize elements at a time.
LinearAlgebra.norm — Methodnorm(x::AbstractDVec, p)Computes the p-norm of the DVec x. Implemented for p ∈ {1, 2, Inf}. Returns zero if x is empty.
LinearAlgebra.norm — Methodnorm(x::AbstractDVec{K,V})Computes the 2-norm of the DVec x.
Rimu.DictVectors.normInf — MethodnormInf(x::AbstractDVec)Infinity norm: largest absolute value of entries.
Rimu.DictVectors.norm_sqr — Methodnorm_sqr(x::AbstractDVec)Fast calculation of the square of the 2-norm of x.
Blocking
Rimu.Blocking — ModuleBlocking
Module that contains functions performing the Flyvbjerg-Petersen blocking analysis for evaluating the standard error on a correlated data set.
Rimu.Blocking.blocker — MethodReblock the data by successively taking the mean of adjacent data points
Rimu.Blocking.blocking — Methodperform a blocking analysis for two data sets
Rimu.Blocking.blocking — Methodperform a blocking analysis for single data set
Rimu.Blocking.blockingErrorEstimation — Methodestimating stnadard error from blocking analysis based on the overlapping of error bars, if all the error bars (or more than 3 on a roll) behind current one are overlapping with it, return the current standard error with error bar.
Rimu.Blocking.mtest — MethodThe "M test" based on Jonsson, M. Physical Review E, 98(4), 043304, (2018). If the blocking analysis (BA) has passed the M test, an error estimation will be given based on the smallest k (i.e. meaningful results at the k-th data point on a BA plot).
Rimu.Blocking.combination_division — Methodfind the standard error on standard errors on two datasets
Rimu.Blocking.covariance — MethodCalculate the covariance between the two data sets vi and vj.
Rimu.Blocking.sd — MethodCalculate the standard deviation of the dataset v
Rimu.Blocking.se — MethodCalculate the standard error of the dataset v
Rimu.Blocking.variance — MethodCalculate the variance of the dataset v
Unexported Submodules
FastBufs
Rimu.FastBufs — ModuleProvides the FastBuf data structure.
Rimu.FastBufs.FastBuf — TypeFastBuf{T}(n)Create a first-in-last-out buffer of maximum capacity n. The element type is T. Fill a FastBuf with push!(), retrieve with pop!(). Accessing elements with getindex() and setindex!() as well as iteration are also supported. Check the capacity of a FastBuf with capacity().
Rimu.FastBufs.capacity — MethodGives the capacity of a FastBuf object.
ConsistentRNG
Link to Module ConsistentRNG.jl
Index
Rimu.BlockingRimu.ConsistentRNGRimu.DictVectorsRimu.FastBufsRimu.HamiltoniansRimu.RimuRimu.BitStringAddresses.BSAdd128Rimu.BitStringAddresses.BSAdd64Rimu.BitStringAddresses.BStringAddRimu.BitStringAddresses.BitAddRimu.BitStringAddresses.BitStringAddressTypeRimu.BitStringAddresses.BoseFSRimu.BitStringAddresses.BoseFSRimu.BitStringAddresses.BosonicFockStateAddressRimu.ConsistentRNG.CRNGRimu.ConstantTimeStepRimu.DelayedLogUpdateRimu.DelayedLogUpdateAfterTargetWalkersRimu.DeltaMemoryRimu.DeltaMemory2Rimu.DictVectors.ADVPairsIteratorRimu.DictVectors.AbstractDVecRimu.DictVectors.DFVecRimu.DictVectors.DVecRimu.DictVectors.FastDVecRimu.DictVectors.FlagsIteratorRimu.DictVectors.KVPairsIteratorRimu.DictVectors.NormProjectorRimu.DictVectors.UniformProjectorRimu.DontUpdateRimu.DoubleLogUpdateRimu.DoubleLogUpdateAfterTargetWalkersRimu.DoubleLogUpdateAfterTargetWalkersSwitchRimu.EveryKthStepRimu.EveryTimeStepRimu.FastBufs.FastBufRimu.FciqmcRunStrategyRimu.Hamiltonians.BoseHubbardReal1DRimu.Hamiltonians.BosonicHamiltonianRimu.Hamiltonians.ExtendedBHReal1DRimu.Hamiltonians.HopsRimu.Hamiltonians.LinearOperatorRimu.HistoryLogUpdateRimu.IsSemistochasticRimu.IsStochasticWithThresholdRimu.LogUpdateRimu.LogUpdateAfterTargetWalkersRimu.MPIDataRimu.MPIDefaultRimu.MPINoWalkerExchangeRimu.MPIOSWinRimu.MemoryStrategyRimu.NoMemoryRimu.NoProjectionRimu.OvershootControlRimu.ProjectStrategyRimu.ReportDFAndInfoRimu.ReportingStrategyRimu.RunTillLastStepRimu.ScaledThresholdProjectRimu.ShiftMemoryRimu.ShiftStrategyRimu.StochasticStyleRimu.ThresholdProjectRimu.TimeStepStrategyBase.:<<Base.:>>>Base.fill!Base.getBase.getBase.isequalBase.isequalBase.lengthLinearAlgebra.axpy!LinearAlgebra.normLinearAlgebra.normLinearAlgebra.normRimu.BitStringAddresses.bitaddrRimu.BitStringAddresses.lbshrRimu.BitStringAddresses.nearUniformRimu.BitStringAddresses.nearUniformRimu.BitStringAddresses.nearUniformRimu.BitStringAddresses.numBitsRimu.BitStringAddresses.numChunksRimu.BitStringAddresses.numModesRimu.BitStringAddresses.numParticlesRimu.BitStringAddresses.onrRimu.BitStringAddresses.onrRimu.BitStringAddresses.remove_ghost_bitsRimu.Blocking.blockerRimu.Blocking.blockingRimu.Blocking.blockingRimu.Blocking.blockingErrorEstimationRimu.Blocking.combination_divisionRimu.Blocking.covarianceRimu.Blocking.mtestRimu.Blocking.sdRimu.Blocking.seRimu.Blocking.varianceRimu.ConsistentRNG.cRandRimu.ConsistentRNG.newChildRNGRimu.ConsistentRNG.seedCRNG!Rimu.ConsistentRNG.trngRimu.DictVectors.add!Rimu.DictVectors.capacityRimu.DictVectors.flagsRimu.DictVectors.gettupleRimu.DictVectors.kvpairsRimu.DictVectors.kvpairsRimu.DictVectors.normInfRimu.DictVectors.norm_sqrRimu.DictVectors.pairtypeRimu.DictVectors.tuplesRimu.DictVectors.zero!Rimu.FastBufs.capacityRimu.Hamiltonians.bit_String_LengthRimu.Hamiltonians.diagMERimu.Hamiltonians.dimensionLORimu.Hamiltonians.fDimensionLORimu.Hamiltonians.generateRandHopRimu.Hamiltonians.hasIntDimensionRimu.Hamiltonians.hopRimu.Hamiltonians.numOfHopsRimu.applyMemoryNoise!Rimu.clearDFlags!Rimu.fciqmc!Rimu.fciqmc_col!Rimu.fciqmc_step!Rimu.freeRimu.greetRimu.mpi_defaultRimu.mpi_no_exchangeRimu.mpi_one_sidedRimu.next_mpiIDRimu.norm_project!Rimu.putRimu.report!Rimu.setSemistochastic!Rimu.sort_into_targets!Rimu.sort_into_targets!Rimu.targetrankRimu.update_dτRimu.update_shift