Skip to content

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:06
· 7 commits to main since this release

ReducedBasisMethods v0.2.1

Diff since v0.2.0

New Features

  • reduced_ode and reduced_pode emit the reduced equation forms as GeometricEquations
    problems.
    reduced_ode(b, ∇H!, timespan, timestep, z₀; parameters) is the ordinary problem of
    the reduced equation the basis carries: ż = J_k Aᵀ ∇H(Az) for the symplectic bases
    CotangentLiftSVD, CotangentLiftEVD and ComplexSVD, where A = Matrix(b), and the Galerkin
    form ż = Uᵀ J_N ∇H(Uz) for the POD bases PODSVD and PODEVD, where U = Φ. A POD basis
    forms no canonical symplectic matrix in its reduced coordinates, so its reduced dimension k
    may be odd.
    reduced_pode(b, ∇H!, timespan, timestep, z₀; parameters) is the partitioned problem of the
    symplectic bases, whose two fields are the first and the last k rows of the same form; a POD
    basis has no q and p halves to split, and no method. A SymplecticDEIM emits ż = J_2k ∇H̃(z)
    through hamiltonian_gradient! by the same two functions. ∇H!(g, t, x, params) writes
    ∇H(x) into g, in the argument order of a vector field, and parameters reaches it unchanged.
    The state is in reduced coordinates — project(b, x₀) gives it — and its element type must be
    the basis's. Integration stays the caller's: these functions emit a problem and no integrator is
    a dependency. A vector field call allocates 0 B for basis states, and for the ForwardDiff.Dual
    states Newton's JacobianAutodiff passes after the first call for that element type, which fills
    a per-type pair of work buffers; whatever ∇H! allocates is the caller's.

  • GeometricEquations joins [deps], at "0.21". The two emitters above build
    ODEProblem and PODEProblem, and import ODEProblem, PODEProblem and NullParameters by
    name rather than through the package's whole export list. GeometricIntegrators and
    GeometricIntegratorsBase do not join [deps]: an integrator is the caller's, and the test
    dependencies supply one.

  • get_DEIM_indices(Ψ) is exported. It returns the k rows that the greedy DEIM algorithm
    selects on the basis Ψ, and is the index form of get_DEIM_interpolation_matrix:
    Π' * A == A[p, :] for p = get_DEIM_indices(Ψ), so a caller samples the rows without forming
    the N × k matrix Π. It was internal under another name; its selection and its
    ArgumentErrors are unchanged.

Merged pull requests:

  • P32: the reduced equation forms, emitted as GeometricEquations problems (#55) (@michakraus)
  • Export get_DEIM_indices, the index form of the DEIM interpolation matrix (#57) (@michakraus)