File ConvergenceAcceleratorFactory.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils

Enums

enum scf_mixer_t

Enum class describing the available Scf convergence accelerators (“mixers”).

Values:

none

Element representing no accelerator at all.

fock_diis

The Fock Direct Inversion of Iterative Subspace convergence accelerator (default).

ediis

The Energy DIIS convergence accelerator.

ediis_diis

Combination of the previous two.

fock_simple

A simple fock extrapolation scheme. Does not work that well.

charge_simple

Very simple charge extrapolation scheme. Does not work that well.

class ConvergenceAcceleratorFactory
#include <ConvergenceAcceleratorFactory.h>

The ConvergenceAcceleratorFactory class provides the register of the available convergence accelerators.

This class also creates pointer to the desired Scf convergence accelerators. In the code convergence accelerators are often referred to as “mixers”.

Public Static Functions

static const std::vector<MixerDescriptor> &getAvailableMixers()
static std::unique_ptr<ScfModifier> createMixer(scf_mixer_t mixerID)

Factory method to create a convergence accelerator.

Return

A std::unique_ptr<ScfModifier> representing a polymorphic pointer to a convergence accelerator.

Parameters
  • mixerID: The corresponding enum class member.

Public Static Attributes

scf_mixer_t defaultMixer

Returns the enum class member corresponding to the default convergence accelerator.

Private Static Functions

static void setAvailableMixers()

Private Static Attributes

std::vector<MixerDescriptor> availableMixers
struct MixerDescriptor
#include <ConvergenceAcceleratorFactory.h>

Small struct used as a map between string name and enum ID.

Public Functions

MixerDescriptor(scf_mixer_t ID, std::string name)

Public Members

scf_mixer_t m_
std::string name_