Utils
ElemCo.Utils
— Modulevarious utilities
Exported functions
ElemCo.Utils.amdmkl
— Functionamdmkl(reset::Bool=false)
Create a modified libmkl_rt.so
and libmkl_core.so
to make MKL work fast on "Zen" AMD machines (e.g., Ryzen series). Solution is based on this forum post.
This function is only needed on AMD machines. In order to execute it, call amdmkl()
in a separate Julia session (not in the same session where you want to run calculations). For example, your workflow could look like this:
> julia -e 'using ElemCo; ElemCo.amdmkl()'
> julia input.jl
where input.jl
is your script that uses ElemCo.jl
. The changes can be reverted by calling amdmkl(true)
.
ElemCo.Utils.argmaxN
— MethodargmaxN(vals, N; by::Function=identity)
Return the indices of the N
largest elements in vals
.
The order of equal elements is preserved. The keyword argument by
can be used to specify a function to compare the elements, i.e., the function is applied to the elements before comparison.
Example
julia> argmaxN([1,2,3,4,5,6,7,8,9,10], 3)
3-element Vector{Int64}:
10
9
8
julia> argmaxN([1,2,3,4,5,-6,-7,-8,-9,-10], 3; by=abs)
3-element Vector{Int64}:
10
9
8
julia> argmaxN([1.0, 1.10, 1.112, -1.113, 1.09], 3; by=x->round(abs(x),digits=2))
3-element Vector{Int64}:
3
4
2
ElemCo.Utils.create_buf
— Functioncreate_buf(len::Int, T=Float64)
Create a buffer of length len
of type T
.
ElemCo.Utils.draw_endline
— Functiondraw_endline()
Print a line of ═.
ElemCo.Utils.draw_line
— Functiondraw_line(n = 63)
Print a thick line of n
characters.
ElemCo.Utils.kwarg_provided_in_macro
— Methodkwarg_provided_in_macro(kwargs, key::Symbol)
Check whether key
is in kwargs
.
This is used in macros to check whether a keyword argument is passed. The keyword argument in question key
is passed as a symbol, e.g. :thr
. kwargs
is the keyword argument list passed to the macro.
ElemCo.Utils.last_energy
— Methodlast_energy(energies::OutDict)
Return the last energy in energies
.
ElemCo.Utils.mainname
— Methodmainname(file::String)
Return the main name of a file, i.e. the part before the last dot and the extension.
Examples:
julia> mainname("~/test.xyz")
("test", "xyz")
julia> mainname("test")
("test", "")
ElemCo.Utils.print_info
— Functionprint_info(info::AbstractString, additional_info::AbstractString="")
Print info
between two lines.
If additional
not empty: additional info after main.
ElemCo.Utils.print_time
— Methodprint_time(EC::AbstractECInfo, t1, info::AbstractString, verb::Int)
Print time with message info
if verbosity verb
is smaller than EC.verbosity.
ElemCo.Utils.reshape_buf
— Methodreshape_buf(buf::Vector{T}, dims...; offset=0)
Reshape (part of) a buffer to given dimensions (without copying), using offset
.
It can be used, e.g., for itermediates in tensor contractions.
Example
julia> buf = Vector{Float64}(undef, 100000)
julia> A = reshape_buf(buf, 10, 10, 20) # 10x10x20 tensor
julia> B = reshape_buf(buf, 10, 10, 10, offset=2000) # 10x10x10 tensor starting at 2001
julia> B .= rand(10,10,10)
julia> C = rand(10,20)
julia> @tensor A[i,j,k] = B[i,j,l] * C[l,k]
ElemCo.Utils.subspace_in_space
— Methodsubspace_in_space(subspace, space)
Return the positions of subspace
in space
(with respect to space
)
subspace
and space
are lists of indices with respect to the full space (e.g., 1:norb
).
Examples
julia> get_subspace_of_space([1,3,5], [1,3,4,5])
3-element Array{Int64,1}:
1
2
4
ElemCo.Utils.subspace_in_space
— Methodsubspace_in_space(subspace::UnitRange{Int}, space::UnitRange{Int})
Return the positions of subspace
in space
(with respect to space
)
subspace
and space
are ranges of indices with respect to the full space (e.g., 1:norb
).
Examples
julia> get_subspace_of_space(4:6, 2:7)
3:5
ElemCo.Utils.substr
— Functionsubstr(string::AbstractString, start::Int, len::Int=-1)
Return substring of string
starting at start
spanning len
characters (including unicode). If len
is not given, the substring spans to the end of string
.
Example:
julia> substr("λabδcd", 2, 3)
"abδ"
ElemCo.Utils.substr
— Methodsubstr(string::AbstractString, range::UnitRange{Int})
Return substring of string
defined by range
(including unicode).
Example:
julia> substr("λabδcd", 2:4)
"abδ"
ElemCo.Utils.OutDict
— TypeOutDict
An ordered descriptive dictionary that maps keys of type String
to values of type Float64
.
Internal functions
ElemCo.Utils.draw_thin_line
— Functiondraw_thin_line(n = 63)
Print a thin line of n
characters.