5#ifndef MADNESS_LOCALIZER_H
6#define MADNESS_LOCALIZER_H
60 print(
"Localizer info");
69 template<
typename T, std::
size_t NDIM>
73 template<
typename T, std::
size_t NDIM>
75 bool randomize)
const;
77 template<
typename T, std::
size_t NDIM>
80 template<
typename T, std::
size_t NDIM>
91 template<
typename T, std::
size_t NDIM>
97 const bool silent=
false);
132 template<
typename T, std::
size_t NDIM>
135 const double thresh = 1
e-9,
const bool randomize =
true,
const bool doprint =
false)
const;
137 template<
typename T, std::
size_t NDIM>
140 const std::vector<int>& set,
142 const bool randomize =
true,
143 const bool doprint =
false)
const;
145 template<
typename T, std::
size_t NDIM>
148 const std::vector<int>& set)
const;
150 template<
typename T, std::
size_t NDIM>
153 const std::vector<int>& set,
155 const bool randomize =
true,
156 const bool doprint =
false)
const;
159 template<
typename T, std::
size_t NDIM>
162 const std::vector<int>& set,
164 const bool randomize =
true,
165 const bool doprint =
false)
const;
168 template<
typename T, std::
size_t NDIM>
171 std::vector<int>&
at_nbf)
const;
175 return dip(i, j, 0) * dip(
k, l, 0) + dip(i, j, 1) * dip(
k, l, 1) + dip(i, j, 2) * dip(
k, l, 2);
185 std::vector<Function<double, 3>>
ao;
Definition test_ar.cc:118
Definition test_ar.cc:170
Contracted Gaussian basis.
Definition madness/chem/molecularbasis.h:469
std::string get_name() const
Definition madness/chem/molecularbasis.h:509
long dim(int i) const
Returns the size of dimension i.
Definition basetensor.h:147
Manages data associated with a row/column/block distributed array.
Definition distributed_matrix.h:388
Computes matrix representation of the Fock operator.
Definition SCFOperators.h:1060
A multiresolution adaptive numerical function.
Definition mra.h:144
bool is_initialized() const
Returns true if the function is initialized.
Definition mra.h:172
Definition localizer.h:21
static void undo_rotations_within_sets(Tensor< T > &U, const std::vector< int > &localized_set)
given a unitary transformation matrix undo rotations within blocks of localized orbitals
Definition localizer.cc:926
DistributedMatrix< T > localize_boys(World &world, const std::vector< Function< T, NDIM > > &mo, const std::vector< int > &set, const double thresh=1e-9, const bool randomize=true, const bool doprint=false) const
Definition localizer.cc:171
static void undo_degenerate_rotations(Tensor< T > &U, const Tensor< double > &eval, const double thresh_degenerate)
given a unitary transformation matrix undo rotations between degenerate columns
Definition localizer.cc:934
double DIP(const Tensor< T > &dip, int i, int j, int k, int l) const
Definition localizer.h:174
std::vector< Function< double, 3 > > ao
Definition localizer.h:185
double thetamax
=R for computing matrix elements of operators
Definition localizer.h:187
Localizer & set_enforce_core_valence_separation(const bool value)
Definition localizer.h:43
Tensor< T > compute_core_valence_separation_transformation_matrix(World &world, const MolecularOrbitals< T, NDIM > &mo_in, const Tensor< T > &Fock) const
localize orbitals while enforcing core-valence separation
Definition localizer.cc:116
std::string method
no rotations between core and valence orbitals (distinguished by 'set')
Definition localizer.h:191
std::string get_method()
Definition localizer.h:34
static std::size_t determine_frozen_orbitals(const Tensor< T > fmat)
Definition localizer.cc:793
const double tolloc
maximum rotation(?)
Definition localizer.h:188
std::vector< int > at_to_bf
Definition localizer.h:182
AtomicBasisSet aobasis
map atoms to basis functions in the "new" algorithm
Definition localizer.h:183
static Tensor< T > undo_rotation(const Tensor< T > &U_in, const std::vector< Slice > &blocks)
given a unitary transformation matrix undo the rotations within the blocks
Definition localizer.cc:905
Localizer & set_method(const std::string method1)
Definition localizer.h:29
Function< double, 3 > metric
Definition localizer.h:186
static bool check_core_valence_separation(const Tensor< T > &Fock, const std::vector< int > &localized_set, const bool silent=false)
Definition localizer.cc:144
std::vector< int > at_nbf
Definition localizer.h:182
DistributedMatrix< T > localize_cholesky(World &world, const std::vector< Function< T, NDIM > > &mo, const std::vector< int > &set) const
Cholesky localization: deterministic and non-iterative.
Definition localizer.cc:643
Localizer & set_metric(const Function< double, 3 > &R)
Definition localizer.h:38
DistributedMatrix< T > localize_PM(World &world, const std::vector< Function< T, NDIM > > &mo, const std::vector< int > &set, const double thresh=1e-9, const bool randomize=true, const bool doprint=false) const
Definition localizer.cc:323
static std::vector< Slice > find_degenerate_blocks(const Tensor< double > &eval, const double thresh_degenerate)
find sets of degenerate states/orbitals
Definition localizer.cc:884
Molecule molecule
Definition localizer.h:184
std::vector< long > * pivot_state
localization method
Definition localizer.h:192
Tensor< T > matrix_exponential(const Tensor< T > &A) const
Definition localizer.cc:942
bool enforce_core_valence_separation
when are orbitals degenerate
Definition localizer.h:190
void prepare_new_basis(World &world, const std::vector< Function< T, NDIM > > &mo, Tensor< T > &C, std::vector< int > &at_to_bf, std::vector< int > &at_nbf) const
build the "new" method's orthonormal atomic-eigenfunction basis and localization blocks
Definition localizer.cc:337
Localizer & set_pivot_state(std::vector< long > *state)
Definition localizer.h:54
void print_info() const
Definition localizer.h:59
DistributedMatrix< T > localize_new_systolic(World &world, const std::vector< Function< T, NDIM > > &mo, const std::vector< int > &set, const double thresh=1e-9, const bool randomize=true, const bool doprint=false) const
the "new" objective optimized with distributed systolic Jacobi sweeps (localize=new_sys)
Definition localizer.cc:620
AtomicBasisSet get_aobasis() const
Definition localizer.h:48
MolecularOrbitals< T, NDIM > localize(const MolecularOrbitals< T, NDIM > &mo_in, bool randomize) const
localize the orbitals
Definition localizer.cc:20
double thresh_degenerate
Definition localizer.h:189
Tensor< T > compute_localization_matrix(World &world, const MolecularOrbitals< T, NDIM > &mo_in, bool randomize) const
Definition localizer.cc:72
DistributedMatrix< T > localize_new(World &world, const std::vector< Function< T, NDIM > > &mo, const std::vector< int > &set, const double thresh=1e-9, const bool randomize=true, const bool doprint=false) const
Definition localizer.cc:416
static void undo_reordering(Tensor< T > &U, const Tensor< double > &occ)
given a unitary transformation matrix undo mere reordering
Definition localizer.h:106
static bool check_frozen_consistency(const long nfrozen, const std::vector< int > &localize_sets)
Definition localizer.cc:822
MolecularOrbitals< T, NDIM > separate_core_valence(const MolecularOrbitals< T, NDIM > &mo_in, const Tensor< T > &Fock) const
Definition localizer.cc:99
Definition MolecularOrbitals.h:25
Definition molecule.h:129
A tensor is a multidimensional array.
Definition tensor.h:318
A parallel world class.
Definition world.h:134
static const double R
Definition csqrt.cc:46
Main include file for MADNESS and defines Function interface.
Namespace for all elements and tools of MADNESS.
Definition DFConvergence.h:9
void print(const T &t, const Ts &... ts)
Print items to std::cout (items separated by spaces) and terminate with a new line.
Definition print.h:227
Function< T, NDIM > copy(const Function< T, NDIM > &f, const std::shared_ptr< WorldDCPmapInterface< Key< NDIM > > > &pmap, bool fence=true)
Create a new copy of the function with different distribution and optional fence.
Definition mra.h:2233
static const double thresh
Definition rk.cc:45
static const long k
Definition rk.cc:44
void e()
Definition test_sig.cc:75