Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 4 additions & 36 deletions src/Hamiltonian.cc
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocal2matrix(
LocGridOrbitals<ORBDTYPE>& phi1, LocGridOrbitals<ORBDTYPE>& phi2,
ReplicatedMatrix& hij, const bool force)
{
(void)phi1;
(void)phi2;
(void)hij;

applyLocal(phi2, force);
Expand Down Expand Up @@ -284,39 +286,5 @@ void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocal2matrix(
mat.insertMatrixElements(ss, phi1.getOverlappingGids(), ct.numst);
}

template Hamiltonian<LocGridOrbitals<ORBDTYPE>>::Hamiltonian();
template Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::Hamiltonian();

template Hamiltonian<LocGridOrbitals<ORBDTYPE>>::~Hamiltonian();
template Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::~Hamiltonian();

template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::setup(
pb::Grid const&, int);
template void Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::setup(
pb::Grid const&, int);

template const LocGridOrbitals<ORBDTYPE>&
Hamiltonian<LocGridOrbitals<ORBDTYPE>>::applyLocal(
LocGridOrbitals<ORBDTYPE>&, const bool);
template const ExtendedGridOrbitals<ORBDTYPE>&
Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::applyLocal(
ExtendedGridOrbitals<ORBDTYPE>&, const bool);
template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocalij(
LocGridOrbitals<ORBDTYPE>&, LocGridOrbitals<ORBDTYPE>&,
ProjectedMatricesInterface* proj_matrices);
template void Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::addHlocalij(
ExtendedGridOrbitals<ORBDTYPE>&, ExtendedGridOrbitals<ORBDTYPE>&,
ProjectedMatricesInterface* proj_matrices);
template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocalij(
LocGridOrbitals<ORBDTYPE>&, ProjectedMatricesInterface* proj_matrices);
template void Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>::addHlocalij(
ExtendedGridOrbitals<ORBDTYPE>&, ProjectedMatricesInterface* proj_matrices);
template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocal2matrix(
LocGridOrbitals<ORBDTYPE>&, LocGridOrbitals<ORBDTYPE>&,
VariableSizeMatrix<sparserow>& mat, const bool force);
template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocal2matrix(
LocGridOrbitals<ORBDTYPE>&, LocGridOrbitals<ORBDTYPE>&,
dist_matrix::DistMatrix<DISTMATDTYPE>& hij, const bool force);
template void Hamiltonian<LocGridOrbitals<ORBDTYPE>>::addHlocal2matrix(
LocGridOrbitals<ORBDTYPE>&, LocGridOrbitals<ORBDTYPE>&, ReplicatedMatrix&,
const bool force);
template class Hamiltonian<LocGridOrbitals<ORBDTYPE>>;
template class Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>;
7 changes: 7 additions & 0 deletions src/LocGridOrbitals.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class ProjectedMatricesInterface;
class LocalizationRegions;
class MasksSet;
class Masks4Orbitals;
class ReplicatedMatrix;

template <typename ScalarType>
class LocGridOrbitals : public Orbitals
Expand Down Expand Up @@ -355,6 +356,12 @@ class LocGridOrbitals : public Orbitals

void addDotWithNcol2Matrix(
LocGridOrbitals&, dist_matrix::DistMatrix<DISTMATDTYPE>&) const;
void addDotWithNcol2Matrix(LocGridOrbitals&, ReplicatedMatrix&) const
{
std::cerr << "LocGridOrbitals::addDotWithNcol2Matrix not implemented "
"for ReplicatedMatrix"
<< std::endl;
}

void scal(const double alpha)
{
Expand Down
9 changes: 6 additions & 3 deletions src/MVPSolver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ int MVPSolver<OrbitalsType, MatrixType>::solve(OrbitalsType& orbitals)

kbpsi.computeHvnlMatrix(&kbpsi, ions_, h11_nl);

OrbitalsType hphi("MVP_hphi", orbitals);

for (int inner_it = 0; inner_it < n_inner_steps_; inner_it++)
{
if (onpe0 && ct.verbose > 1)
Expand Down Expand Up @@ -239,7 +241,8 @@ int MVPSolver<OrbitalsType, MatrixType>::solve(OrbitalsType& orbitals)
// compute h11 for the current potential by adding local part to
// nonlocal components
MatrixType h11(h11_nl);
hamiltonian_->addHlocal2matrix(orbitals, orbitals, h11, false);
hamiltonian_->applyLocal(numst_, orbitals, hphi);
orbitals.addDotWithNcol2Matrix(hphi, h11);

current_proj_mat->assignH(h11);
current_proj_mat->setHB2H();
Expand Down Expand Up @@ -318,8 +321,8 @@ int MVPSolver<OrbitalsType, MatrixType>::solve(OrbitalsType& orbitals)

// update h11
h11 = h11_nl;
hamiltonian_->addHlocal2matrix(
orbitals, orbitals, h11, false);
hamiltonian_->applyLocal(numst_, orbitals, hphi);
orbitals.addDotWithNcol2Matrix(hphi, h11);

proj_mat_work_->assignH(h11);
proj_mat_work_->setHB2H();
Expand Down