Releases: RimuQMC/Rimu.jl
v0.15.0
Rimu v0.15.0
New features
MolecularHamiltoniandefines anAbstractHamiltoniantype that allows Rimu.jl to perform QMC and exact diagonalisation calculations for ab-initio electronic structure. The required electron integrals are loaded as FCIDUMP data with use of the packageElemCo.jl, which needs to be loaded separately. For details see #327 and #348ModifiedHamiltonian, #331 provides a general new interface to define wrappers that modify aAbstractHamiltonianOperatorProduct#326 allows defining a product of two operatorsHamiltonianSum#339 allows adding twoAbstractHamiltiansHubbardRealSpaceis improved and now accepts complex and anisotropic hopping parameters as well a nearest-neighbor interactions #345unoccupied_mode_mapandoccupied_mode_map(replacesOccupiedModeMap), along withunoccupied_modesandoccupied_modes, #330
AbstractHamiltonian interface consolidation #329
The new interface is consolidated and is now required when using wrappers that are based on ModifiedHamiltonian. New features in this release:
has_random_offdiagonal(operator)function acts on the type of an
operator and returnstrueifrandom_offdiagonal(column)is
implementedhas_iterable_offdiagonals(operator)function acts on the type of an
operator and returnstrueifoffdiagonal(column)is implementedoperator * addresscallsoperator_column(operator, address)AbstractOperatorColumns iterate over Pairsdot(dvec, column)is defined and returns what is expectedcolumn[l_address]returns the matrix element
⟨l_address|operator|address⟩
Changed bahaviour
- parameters for
DynamicSemistochasticmode have changed #325
Deprecations
OccupiedModeMapis deprecated in favour ofoccupied_mode_map#330
Bug fixes
- type instability in exact spawning (#328)
- sort small dvecs before printing to make doctests reproducible; fixes
issue #322, #329
Changed behaviour
- new package extension
ElemCoExtsupports the interface withElemCo.jlwhen usingMolecularHamiltonian
Breaking changes
- due to a new implementation of Hamiltonian wrappers (e.g.
ParitySymmetry, etc.) in #331 these now require operators to use the newAbstractHamiltonianinterface
Merged pull requests:
- Feature/saner dynamicsemistochastic parameters (#325) (@mtsch)
- Operator product (#326) (@jamie-tay)
- Molecular Hamiltonian (#327) (@lch)
- Fix type instability in exact spawning (#328) (@mtsch)
- Operator traits for iterable offdiagonals and random offdiagonal (#329) (@joachimbrand)
- Unified ModeMap Type (#330) (@lch)
- ModifiedHamiltonian (#331) (@mtsch)
- New constructors for
AbstractDVecs (#333) (@joachimbrand) - New interface implementation for
HubbardRealSpace(#334) (@mtsch) - Fix printing for complex DVecs (#335) (@jamie-tay)
- Revised action settings (#336) (@joachimbrand)
- Fix typo in documentation for ModifiedHamiltonian (#338) (@lch)
- Hamiltonian Sum (#339) (@jamie-tay)
- CompatHelper: bump compat for KrylovKit in [weakdeps] to 0.10, (keep existing compat) (#341) (@github-actions[bot])
- CompatHelper: bump compat for DataStructures to 0.19, (keep existing compat) (#342) (@github-actions[bot])
- Update reduced_density_matrix.jl (#343) (@Skuwar1)
- Nearest neighbour interactions for
HubbardRealSpace(#345) (@Skuwar1) - Bump actions/checkout from 4 to 5 (#346) (@dependabot[bot])
- Fix uninitialized variable in FermiFS (#347) (@lch)
- Fix typo when comparing with nothing (#349) (@lch)
- Use custom iteration function if available for
ModifiedHamiltonian. (#350) (@mtsch) - Small fix in documentation (#351) (@joachimbrand)
Closed issues:
v0.14.1
Rimu v0.14.1
Interface changes
- The Interface for
AbstractHamiltonianandAbstractOperatorare changing and will require anoperator_columnin future. The old interface is still supported for now #317
New features
- The `AbstractHamiltonian
- The function
growth_estimator_analysisnow allows passingtime_stepas a keyword argument - New functions
save_stateandload_stateallow savingDVecs andPDVecs #298, these can includeOccupationNumberFS#307 - Convenient constructors for
OccupationNumberFS#308 AllOverlapsis available for excited states #302BasisSetRepresentationnow works on anyAbstractOperator#311- Matrix free exact diagonalisation refactored and much improved.
LinearMapfromLinearMaps.jlimplemented forAbstractOperators; used inExactDiagonalizationProblem#306 - Complex-valued operators are now fully supported in
ProjectorMonteCarloProblem#313, #315 ExtendedHubbardReal1Dnow supports power-law interactions #319
Discontinued features
save_dvecwas already broken due to BSON.jl dependency #298
Bug fixes
growth_witnessnow acceptstime_stepas a keyword argument.- Bugs in
OccupationNumberFS#307 , #308 momentum_cutoffwas not correctly implemented inFroehlichPolaron#316
Merged pull requests:
- Saving/loading vectors (#298) (@mtsch)
- AllOverlaps for Excited States (#302) (@jamie-tay)
- Allow passing
time_stepto StatsTools functions (#303) (@mtsch) - CompatHelper: bump compat for KrylovKit in [weakdeps] to 0.9, (keep existing compat) (#304) (@github-actions[bot])
- Better exact diagonalisation (#306) (@mtsch)
- allow saving/loading
OccupationNumberFS(#307) (@mtsch) - Vacuum constructors for
OccupationNumberFS(#308) (@joachimbrand) - Import CompressionStrategy interface explicitly (#309) (@lch)
- Allow any operator in BasisSetRep (#311) (@mtsch)
- Complex Hamiltonians and Walkers (#313) (@jamie-tay)
- Fix check for starting vectors with a complex Hamiltonian (#315) (@jamie-tay)
- Bugfix: momentum_cutoff in FrohlichPolaron (#316) (@joachimbrand)
- Operator Column (#317) (@jamie-tay)
- Feacture/extended range interaction (#319) (@Skuwar1)
- Fix interface tests (#324) (@jamie-tay)
Closed issues:
- Saving
DVecs and restarting long calculations from file (#213)
v0.14.0
Rimu v0.14.0
Breaking changes
- IDs for replicas and spectral states are swapped: replica ids defining
the row in the matrix ofstate_vectorsnow are appended first and
spectral ids second. If there is only a single replica, or a single
spectral state, the respective ids are ommitted. - Remove
BoseFS2C,BoseHubbardMom1D2C,BoseHubbardReal1D2C. These models were moved to another package, see RimuLegacyHamiltonians.jl MPIDatawas removed - usePDVecinstead.- The submodule
Rimu.RMPIwas removed. The relevant remaining functions are exported at top level.
New features
- new module
Rimu.InterfaceTestswith functions test_observable_interfacetest_operator_interfacetest_hamiltonian_interfacetest_hamiltonian_structureReducedDensityMatrixbuild_basisis faster (using threading) and can work on address type
Deprecations
- in keyword arguments to
ProjectorMonteCarloProblemmaxlengthdeprecated, replaced bymax_lengthwalltimedeprecated, replaced bywalltime
lomc!now prints a deprecation warning
Internal changes
- fix random seeding of tests
- Documentation rework and docstring changes
- remove
lomc!from most tests
Bug fixes
- normalisation in
single_particle_density
Merged pull requests:
- Excited states (#269) (@jamie-tay)
- Remove MPIData (#270) (@mtsch)
- Fast basis (#287) (@mtsch)
- Feature/reduced density matrix (#289) (@Skuwar1)
- Improve performance of ReducedDensityMatrix (#292) (@mtsch)
- CompatHelper: bump compat for VectorInterface to 0.5, (keep existing compat) (#294) (@github-actions[bot])
- Reduce allocations in
ReducedDensityMatrix(#295) (@joachimbrand) - Update behind commits (#296) (@Skuwar1)
- Move docs to RimuQMC (#297) (@mtsch)
- Interface tests - remove two component models (#299) (@joachimbrand)
- Fix normalisation in
single_particle_density(#300) (@mtsch) - Consistently apply snake_case (#301) (@joachimbrand)
v0.13.1
Rimu v0.13.1
New features
ExtendedHubbardMom1D, new Hamiltonian- Momentum-space Hubbard Hamiltonians accept a complex hopping parameter:
HubbardMom1D,HubbardMom1DEP AbstractObservable, new less restrictive supertype forAbstractHamiltonianandAbstractObservable
Bug fixes
See list of merged PRs.
Merged pull requests:
- Fix offdiagonals in two particle density matrix (#281) (@mtsch)
- Fix type instability in
Displacements(#282) (@mtsch) - Feature/dispersion in mom space (#283) (@Skuwar1)
- Fix
UndefVarErrorwhen setting initial shift as vector (#284) (@mtsch) - Feature/ExtendedHubbardMom1D (#286) (@Skuwar1)
- remove spurious bracket from
show(RatioBlockingResult)(#288) (@christofbradly) AbstractObservablesupertype (#291) (@joachimbrand)
v0.13.0
Rimu v0.13.0
Breaking changes
- Changes to the
AbstractHamiltonianinterface: The functionallowed_address_typeis removed and replaced by the functionallows_address_type, which takes two arguments, an operator and a type and returns a boolean.
New features
AbstractOperatoris a new abstract type that can be used for operators that are to be used as observables, e.g. for calculating their dot products in the context of aReplicaStrategy.AbstractOperatoris a supertype ofAbstractHamiltonianand has a similar interface but doesn't requirestarting_address.VectorInterface.scalartypeis defined forAbstractHamiltonianandAbstractOperatorto define the underlying scalar type. In contrast,eltypedefines the type returned bydiagonal_element,offdiagonals, and the three-way dot product. This may be an array forAbstractOperatoronly. ForAbstractHamiltonianstheetypeandscalartypeshould be identical.- Attempting to use a complex Hamiltonian with
ProjectorMonteCarloProblemthrows an error. - The
SingleParticleExcitationandTwoParticleExcitationoperators, which can be used to compute reduced density matrices were added. ExtendedHubbardReal1Dnow supports twisted boundary conditions and complex hopping strengths.- The number of MPI calls during a projector Monte Carlo run has been reduced.
Merged pull requests:
- Extra boundary conditions (#265) (@Skuwar1)
- Fix the docstring of
BasisSetRepresentation(#273) (@joachimbrand) - Feature/reduced density matrix (#276) (@Skuwar1)
- Observables (#278) (@joachimbrand)
- Fix
num_particlesforOccupationNumberFS(#279) (@mtsch) - Reduce the number of collective MPI calls (#280) (@mtsch)
Closed issues:
v0.12.0
Rimu v0.12.0
Breaking release with a major rework of the user interface.
This release is a transition step where a much of the old user interface
is still there an usable but deprecated. If you get warning messages using
your scripts with this release, please follow instructions and update
your script to be ready for the next breaking release.
New user interface
CommonSolve.solveis implemented forProjectorMonteCarloProblemas the main entrance point
to perform an FCIQMC calculation. Methods forsolve,solve!,initare implemented.
A report in form of aDataFramecan be returned from a simulation but the column names have changed.ExactDiagonalizationProblemtogether with the relevantsolvemethod is a new access point for
exact diagonalization ofAbstractHamiltonians
See PR#248 for a more detailed description of the changes.
Other new features
LatticeGeometry,PeriodicBoundaries,HardwallBoundariesandLadderBoundariesreplaced withCubicGrid.- Observables with
eltype(op) <: AbstractArrayare now supported in bothdotand for use inAllOverlaps. - New
G2RealSpaceoperator, which is aware of the geometry and computes G_2 for all displacement vectors at the same time.
Deprecations
lomc!targetwalkersas keyword argument to manyShiftStrategys is deprecated in favor oftarget_walkersFCIQMCRunStrategyand its subtypeRunTillLastStepare deprecated.
Breaking changes
LatticeGeometryno longer exists,PeriodicBoundaries,HardwallBoundariesandLadderBoundariesare no longer separate types. All user code should still run without modifications.- removed
TripleLogUpdate lomc!does not acceptAbstractMatrixas argument- new default
style=IsDynamicSemistochastic()fordefault_starting_vector
Merged pull requests:
- Solve interface 3 (#248) (@joachimbrand)
- Exact diagonalization problem (#251) (@joachimbrand)
- Rework Geometry, add new G2 correlator (#254) (@mtsch)
- Bump julia-actions/cache from 1 to 2 (#256) (@dependabot[bot])
- Allow computing estimators directly on a PMCSimulation (#257) (@mtsch)
- Feature/rework mpi example (#258) (@joachimbrand)
- New communication strategy: AllToAll (#260) (@mtsch)
- CompatHelper: bump compat for KrylovKit in [weakdeps] to 0.8, (keep existing compat) (#267) (@github-actions[bot])
- Breaking changes before v1.0 release (#268) (@joachimbrand)
- Make it easier to run continuation runs (#272) (@mtsch)
v0.11.2
Rimu v0.11.2
Non-breaking release with a new feature and a number of bug fixes and enhancements.
New features
- New observable
ParticleNumberOperator#255
Bug fixes
- Avoid
NaNs in harmonic oscillator Hamiltonians working around a bug inHypergeometricFunctions.jl#253
Other changes
Merged pull requests:
- Use explicit imports (#249) (@joachimbrand)
- Bump julia-actions/setup-julia from 1 to 2 (#250) (@dependabot[bot])
- Tweak the CI setup for MPI tests (#252) (@mtsch)
- bugfix: dodge
NaNin 3F2 (#253) (@christofbradly) - ParticleNumberOperator (#255) (@joachimbrand)
v0.11.1
Rimu v0.11.1
Non-breaking release with one major new feature and a number of bug fixes and enhancements.
New features
- New
AbstractHamiltonianmodelFroehlichPolaron#237
Changed behaviour
dimensionworks separately on address types andAbstractHamiltonianinstances- The
AbstractHamiltonianinterface definition (via the docstring) had some minor changes and clarification #244 - example scripts were polished #239
Bug fixes
- Testing of the
AbstractHamiltonianinterface was tightened; some minor bugs discovered and removed #244 dimension#243
Merged pull requests:
- FroehlichPolaron Hamiltonian (#237) (@joachimbrand)
- Example script polishing (#239) (@mtsch)
- Use caching in GH actions (#240) (@mtsch)
- Bump peter-evans/find-comment from 1 to 3 (#241) (@dependabot[bot])
- Bump peter-evans/create-or-update-comment from 1 to 4 (#242) (@dependabot[bot])
- Fix bug in dimension (#243) (@joachimbrand)
- rework dimension (#244) (@joachimbrand)
- Skip docs and benchmarks on dependabot PRs (#245) (@mtsch)
- Dependabot benchmark and doc ignores, reorganize what action is run when (#246) (@mtsch)
v0.11.0
Rimu v0.11.0
A minor breaking release with mostly new functionality and minor changes in behaviour that are strictly breaking, but most old scripts should run without changes.
New features
- Number non-conserving Fock state
OccupationNumberFS#234 - Observables
SuperfluidCorrelatorandStringCorrelatorfor 1D Hubbard chains #227
Changed behaviour
- Fock states can be constructed by passing occupation numbers directly into constructors for
BoseFS,FermiFS, andOccupationNumberFS#234 - Rules related to the initiator method are now exported and can be passed into
lomc!with a keyword argument #236
Bug fixes
- in
single_particle_density, #225 - in
BernoulliSpawning, #233 - Benchmark tune file updated to work with latest package version
Breaking changes
BoseFS(m::Integer)was previously interpreted as the vacuum state (zero particles) withmmodes, but is now interpreted as a state withmparticles in a single mode. UseBoseFS(m::Integer, 1=>0)to construct the vacuum state withmmodes.
Merged pull requests:
- Fix bug with
single_particle_density, integer vectors andCompositeFS(#225) (@mtsch) - Fix formula in
HubbardRealSpacedocumentation (#226) (@mtsch) - SuperfluidCorrelator and StringCorrelator (#227) (@rohan-kumar-uoa)
- fix docstring of lomc! (#228) (@joachimbrand)
- Minor fix in
RimuIO.load_dfandbose_hubbard_interactiondocstrings (#229) (@yangmr04) - Fix probability in Bernoulli spawning (#233) (@mtsch)
- Number non-conserving Fock states (#234) (@joachimbrand)
- Fix failing benchmarks (#235) (@mtsch)
- Service update: Initiators (#236) (@joachimbrand)
Closed issues:
v0.10.2
Rimu v0.10.2
A non-breaking restructure of the keyword arguments for lomc!(). More parameters of an FCIQMC calculation can be passed directly as keyword arguments to lomc!() reducing the need to pre-construct the initial vector and strategy-type arguments.
The script BHM-example.jl is redone.
Changed and modified keyword argument to lomc!()
address(new) - used for starting vector and initial shiftthreading(reinstated) - controls parallelism and is used for initial starting vectorshift(new) - initial value of shiftdτ(now documented) - initial time steptargetwalkers(new) - target norm forDoubleLogUpdate
New functions
default_starting_vector- the default starting vector forlomc!
The keyword argument params::FciqmcRunStrategy is now obsolete (though still accepted). In practice it should now rarely be necessary to explicitly construct the starting vector v and the s_strat::ShiftStrategy=DoubleLogUpdate keyword argument.
Breaking changes
No breaking changes.
Merged pull requests:
- Simplify lomc! arguments (#223) (@joachimbrand)