Skip to content

Releases: RimuQMC/Rimu.jl

v0.15.0

21 Sep 14:29

Choose a tag to compare

Rimu v0.15.0

Diff since v0.14.1

New features

  • MolecularHamiltonian defines an AbstractHamiltonian type 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 package ElemCo.jl, which needs to be loaded separately. For details see #327 and #348
  • ModifiedHamiltonian, #331 provides a general new interface to define wrappers that modify a AbstractHamiltonian
  • OperatorProduct #326 allows defining a product of two operators
  • HamiltonianSum #339 allows adding two AbstractHamiltians
  • HubbardRealSpace is improved and now accepts complex and anisotropic hopping parameters as well a nearest-neighbor interactions #345
  • unoccupied_mode_map and occupied_mode_map (replaces OccupiedModeMap), along with unoccupied_modes and occupied_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 returns true if random_offdiagonal(column) is
    implemented
  • has_iterable_offdiagonals(operator) function acts on the type of an
    operator and returns true if offdiagonal(column) is implemented
  • operator * address calls operator_column(operator, address)
  • AbstractOperatorColumns iterate over Pairs
  • dot(dvec, column) is defined and returns what is expected
  • column[l_address] returns the matrix element
    ⟨l_address|operator|address⟩

Changed bahaviour

  • parameters for DynamicSemistochastic mode have changed #325

Deprecations

  • OccupiedModeMap is deprecated in favour of occupied_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 ElemCoExt supports the interface with ElemCo.jl when using MolecularHamiltonian

Breaking changes

  • due to a new implementation of Hamiltonian wrappers (e.g. ParitySymmetry, etc.) in #331 these now require operators to use the new AbstractHamiltonian interface

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:

  • Molecular Hamiltonian (#321)
  • Doctests fail with Julia v1.13 (#322)

v0.14.1

07 Jun 06:08

Choose a tag to compare

Rimu v0.14.1

Diff since v0.14.0

Interface changes

  • The Interface for AbstractHamiltonian and AbstractOperator are changing and will require an operator_column in future. The old interface is still supported for now #317

New features

  • The `AbstractHamiltonian
  • The function growth_estimator_analysis now allows passing time_step as a keyword argument
  • New functions save_state and load_state allow saving DVecs and PDVecs #298, these can include OccupationNumberFS #307
  • Convenient constructors for OccupationNumberFS #308
  • AllOverlaps is available for excited states #302
  • BasisSetRepresentation now works on any AbstractOperator #311
  • Matrix free exact diagonalisation refactored and much improved.LinearMap from LinearMaps.jl implemented for AbstractOperators; used in ExactDiagonalizationProblem #306
  • Complex-valued operators are now fully supported in ProjectorMonteCarloProblem #313, #315
  • ExtendedHubbardReal1D now supports power-law interactions #319

Discontinued features

  • save_dvec was already broken due to BSON.jl dependency #298

Bug fixes

  • growth_witness now accepts time_step as a keyword argument.
  • Bugs in OccupationNumberFS #307 , #308
  • momentum_cutoff was not correctly implemented in FroehlichPolaron #316

Merged pull requests:

Closed issues:

  • Saving DVecs and restarting long calculations from file (#213)

v0.14.0

26 Dec 23:18
340e766

Choose a tag to compare

Rimu v0.14.0

Diff since v0.13.1

Breaking changes

  • IDs for replicas and spectral states are swapped: replica ids defining
    the row in the matrix of state_vectors now 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
  • MPIData was removed - use PDVec instead.
  • The submodule Rimu.RMPI was removed. The relevant remaining functions are exported at top level.

New features

  • new module Rimu.InterfaceTests with functions
  • test_observable_interface
  • test_operator_interface
  • test_hamiltonian_interface
  • test_hamiltonian_structure
  • ReducedDensityMatrix
  • build_basis is faster (using threading) and can work on address type

Deprecations

  • in keyword arguments to ProjectorMonteCarloProblem
    • maxlength deprecated, replaced by max_length
    • walltime deprecated, replaced by walltime
  • 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:

v0.13.1

09 Nov 03:04

Choose a tag to compare

Rimu v0.13.1

Diff since v0.13.0

New features

  • ExtendedHubbardMom1D, new Hamiltonian
  • Momentum-space Hubbard Hamiltonians accept a complex hopping parameter: HubbardMom1D, HubbardMom1DEP
  • AbstractObservable, new less restrictive supertype for AbstractHamiltonian and AbstractObservable

Bug fixes

See list of merged PRs.

Merged pull requests:

v0.13.0

13 Sep 03:22
7cb56f7

Choose a tag to compare

Rimu v0.13.0

Diff since v0.12.0

Breaking changes

  • Changes to the AbstractHamiltonian interface: The function allowed_address_type is removed and replaced by the function allows_address_type, which takes two arguments, an operator and a type and returns a boolean.

New features

  • AbstractOperator is 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 a ReplicaStrategy. AbstractOperator is a supertype of AbstractHamiltonian and has a similar interface but doesn't require starting_address.
  • VectorInterface.scalartype is defined for AbstractHamiltonian and AbstractOperator to define the underlying scalar type. In contrast, eltype defines the type returned by diagonal_element, offdiagonals, and the three-way dot product. This may be an array for AbstractOperator only. For AbstractHamiltonians the etype and scalartype should be identical.
  • Attempting to use a complex Hamiltonian with ProjectorMonteCarloProblem throws an error.
  • The SingleParticleExcitation and TwoParticleExcitation operators, which can be used to compute reduced density matrices were added.
  • ExtendedHubbardReal1D now 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:

Closed issues:

  • Documentation: consistently denote Fock-space operators with hats (#230)
  • ERROR: UndefVarError: ProjectorMonteCarloProblem not defined (#259)
  • Documentation of releases is not properly saved (#266)

v0.12.0

10 Jul 08:04
26e1255

Choose a tag to compare

Rimu v0.12.0

Diff since v0.11.2

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.solve is implemented for ProjectorMonteCarloProblem as the main entrance point
    to perform an FCIQMC calculation. Methods for solve, solve!, init are implemented.
    A report in form of a DataFrame can be returned from a simulation but the column names have changed.
  • ExactDiagonalizationProblem together with the relevant solve method is a new access point for
    exact diagonalization of AbstractHamiltonians

See PR#248 for a more detailed description of the changes.

Other new features

  • LatticeGeometry, PeriodicBoundaries, HardwallBoundaries and LadderBoundaries replaced with CubicGrid.
  • Observables with eltype(op) <: AbstractArray are now supported in both dot and for use in AllOverlaps.
  • New G2RealSpace operator, which is aware of the geometry and computes G_2 for all displacement vectors at the same time.

Deprecations

  • lomc!
  • targetwalkers as keyword argument to many ShiftStrategys is deprecated in favor of target_walkers
  • FCIQMCRunStrategy and its subtype RunTillLastStep are deprecated.

Breaking changes

  • LatticeGeometry no longer exists, PeriodicBoundaries, HardwallBoundaries and LadderBoundaries are no longer separate types. All user code should still run without modifications.
  • removed TripleLogUpdate
  • lomc! does not accept AbstractMatrix as argument
  • new default style=IsDynamicSemistochastic() for default_starting_vector

Merged pull requests:

v0.11.2

02 May 04:51
8c8b705

Choose a tag to compare

Rimu v0.11.2

Diff since v0.11.1

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 in HypergeometricFunctions.jl #253

Other changes

  • tweaked CI setup for MPI tests #252
  • use explicit imports #249
  • bump julia-actions/setup-julia #250

Merged pull requests:

v0.11.1

29 Feb 23:04

Choose a tag to compare

Rimu v0.11.1

Diff since v0.11.0

Non-breaking release with one major new feature and a number of bug fixes and enhancements.

New features

  • New AbstractHamiltonian model FroehlichPolaron #237

Changed behaviour

  • dimension works separately on address types and AbstractHamiltonian instances
  • The AbstractHamiltonian interface definition (via the docstring) had some minor changes and clarification #244
  • example scripts were polished #239

Bug fixes

  • Testing of the AbstractHamiltonian interface was tightened; some minor bugs discovered and removed #244
  • dimension #243

Merged pull requests:

v0.11.0

19 Jan 04:54

Choose a tag to compare

Rimu v0.11.0

Diff since v0.10.2

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 SuperfluidCorrelator and StringCorrelator for 1D Hubbard chains #227

Changed behaviour

  • Fock states can be constructed by passing occupation numbers directly into constructors for BoseFS, FermiFS, and OccupationNumberFS #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) with m modes, but is now interpreted as a state with m particles in a single mode. Use BoseFS(m::Integer, 1=>0) to construct the vacuum state with m modes.

Merged pull requests:

Closed issues:

  • Bug in single_particle_density with CompositeFS (#224)
  • Potential bug in Bernoulli spawning (#232)

v0.10.2

26 Nov 04:07

Choose a tag to compare

Rimu v0.10.2

Diff since v0.10.1

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 shift
  • threading (reinstated) - controls parallelism and is used for initial starting vector
  • shift (new) - initial value of shift
  • (now documented) - initial time step
  • targetwalkers (new) - target norm for DoubleLogUpdate

New functions

  • default_starting_vector - the default starting vector for lomc!

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: