Quantum 3xplorer (Q3)
Loading...
Searching...
No Matches
init.hpp
Go to the documentation of this file.
1
#pragma once
2
3
/**
4
* Diagonalizer — abstract interface for eigenvalue solvers.
5
*
6
* Provides the generic base for all eigensolvers. Planewave-specific
7
* solve() methods, cached projector management, and smooth potential
8
* cache invalidation are declared in the PlanewaveDiagonalizer subclass.
9
*/
10
11
#include <string>
12
13
#include "
layer_0_core/types/init.hpp
"
14
15
namespace
q3
{
16
17
// Abstract interface for eigenvalue solvers.
18
class
Diagonalizer
{
19
public
:
20
virtual
~Diagonalizer
() =
default
;
21
22
[[nodiscard]]
virtual
std::string
name
()
const
= 0;
23
24
/**
25
* Set the convergence tolerance for iterative eigensolvers.
26
* No-op for direct solvers; overridden by Davidson and similar.
27
*/
28
virtual
void
set_tolerance
(
Real
/*tolerance*/
) {}
29
30
/**
31
* Set whether this is the first SCF iteration.
32
* No-op by default; overridden by solvers like Davidson to control convergence checks.
33
*/
34
virtual
void
set_first_iteration
(
bool
/*is_first_iteration*/
) {}
35
};
36
37
}
// namespace q3
q3::Diagonalizer
Definition
init.hpp:18
q3::Diagonalizer::set_tolerance
virtual void set_tolerance(Real)
Definition
init.hpp:28
q3::Diagonalizer::~Diagonalizer
virtual ~Diagonalizer()=default
q3::Diagonalizer::set_first_iteration
virtual void set_first_iteration(bool)
Definition
init.hpp:34
q3::Diagonalizer::name
virtual std::string name() const =0
init.hpp
q3
Definition
q3_core_api.hpp:33
q3::Real
double Real
Definition
type_aliases.hpp:20
src
layer_4_computation
diagonalizer
init.hpp
Generated by
1.9.8