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
10 changes: 6 additions & 4 deletions drivers/check_input.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,13 @@ int main(int argc, char** argv)
{
MGmolInterface* mgmol;
if (ct.isLocMode())
mgmol = new MGmol<LocGridOrbitals>(global_comm, *MPIdata::sout,
input_filename, lrs_filename, constraints_filename);
mgmol = new MGmol<LocGridOrbitals<ORBDTYPE>>(global_comm,
*MPIdata::sout, input_filename, lrs_filename,
constraints_filename);
else
mgmol = new MGmol<ExtendedGridOrbitals>(global_comm, *MPIdata::sout,
input_filename, lrs_filename, constraints_filename);
mgmol = new MGmol<ExtendedGridOrbitals<ORBDTYPE>>(global_comm,
*MPIdata::sout, input_filename, lrs_filename,
constraints_filename);

*MPIdata::sout << " Input parameters OK\n";

Expand Down
10 changes: 6 additions & 4 deletions drivers/example1.cc
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,13 @@ int main(int argc, char** argv)

MGmolInterface* mgmol;
if (ct.isLocMode())
mgmol = new MGmol<LocGridOrbitals>(global_comm, *MPIdata::sout,
input_filename, lrs_filename, constraints_filename);
mgmol = new MGmol<LocGridOrbitals<ORBDTYPE>>(global_comm,
*MPIdata::sout, input_filename, lrs_filename,
constraints_filename);
else
mgmol = new MGmol<ExtendedGridOrbitals>(global_comm, *MPIdata::sout,
input_filename, lrs_filename, constraints_filename);
mgmol = new MGmol<ExtendedGridOrbitals<ORBDTYPE>>(global_comm,
*MPIdata::sout, input_filename, lrs_filename,
constraints_filename);

if (MPIdata::onpe0)
{
Expand Down
4 changes: 2 additions & 2 deletions src/ABPG.cc
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,5 @@ void ABPG<T>::printTimers(std::ostream& os)
update_states_tm_.print(os);
}

template class ABPG<LocGridOrbitals>;
template class ABPG<ExtendedGridOrbitals>;
template class ABPG<LocGridOrbitals<ORBDTYPE>>;
template class ABPG<ExtendedGridOrbitals<ORBDTYPE>>;
16 changes: 9 additions & 7 deletions src/AOMMprojector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
#include "ProjectedMatricesSparse.h"
#include "SubspaceProjector.h"

AOMMprojector::AOMMprojector(
LocGridOrbitals& phi, const std::shared_ptr<LocalizationRegions>& lrs)
AOMMprojector::AOMMprojector(LocGridOrbitals<ORBDTYPE>& phi,
const std::shared_ptr<LocalizationRegions>& lrs)
{
Control& ct = *(Control::instance());
Mesh* mymesh = Mesh::instance();
Expand Down Expand Up @@ -48,7 +48,7 @@ AOMMprojector::AOMMprojector(
ct.numst, with_spin, ct.occ_width);

// kernel functions use their own projected matrices and masks
kernel_phi_ = new LocGridOrbitals(
kernel_phi_ = new LocGridOrbitals<ORBDTYPE>(
"AOMM", phi, kernel_proj_matrices_, kernelMasks_, nullptr);
kernel_phi_->initGauss(0.5 * radius, lrs);

Expand All @@ -59,7 +59,8 @@ AOMMprojector::AOMMprojector(

kernel_phi_->computeGramAndInvS(ct.verbose);

kernelprojector_ = new SubspaceProjector<LocGridOrbitals>(*kernel_phi_);
kernelprojector_
= new SubspaceProjector<LocGridOrbitals<ORBDTYPE>>(*kernel_phi_);

matrix_mask_ = new SquareLocalMatrices<MATDTYPE, MemorySpace::Host>(
subdivx, kernel_phi_->chromatic_number());
Expand All @@ -77,7 +78,7 @@ AOMMprojector::AOMMprojector(
// matrix_mask_->setMaskThreshold(threshold, 10000.);
}

void AOMMprojector::resetProjectors(LocGridOrbitals& phi)
void AOMMprojector::resetProjectors(LocGridOrbitals<ORBDTYPE>& phi)
{
if (onpe0) std::cout << "AOMM: reset projectors..." << std::endl;

Expand All @@ -89,10 +90,11 @@ void AOMMprojector::resetProjectors(LocGridOrbitals& phi)
kernel_phi_->computeGramAndInvS(0);

delete kernelprojector_;
kernelprojector_ = new SubspaceProjector<LocGridOrbitals>(*kernel_phi_);
kernelprojector_
= new SubspaceProjector<LocGridOrbitals<ORBDTYPE>>(*kernel_phi_);
}

void AOMMprojector::projectOut(LocGridOrbitals& phi)
void AOMMprojector::projectOut(LocGridOrbitals<ORBDTYPE>& phi)
{
assert(kernelprojector_ != nullptr);
assert(matrix_mask_ != nullptr);
Expand Down
12 changes: 6 additions & 6 deletions src/AOMMprojector.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class MasksSet;
class AOMMprojector
{
private:
LocGridOrbitals* kernel_phi_;
LocGridOrbitals<ORBDTYPE>* kernel_phi_;

SubspaceProjector<LocGridOrbitals>* kernelprojector_;
SubspaceProjector<LocGridOrbitals<ORBDTYPE>>* kernelprojector_;

MasksSet* kernelMasks_;

Expand All @@ -35,13 +35,13 @@ class AOMMprojector
short counter_;

public:
AOMMprojector(
LocGridOrbitals& phi, const std::shared_ptr<LocalizationRegions>& lrs);
AOMMprojector(LocGridOrbitals<ORBDTYPE>& phi,
const std::shared_ptr<LocalizationRegions>& lrs);
~AOMMprojector();

void projectOut(LocGridOrbitals& phi);
void projectOut(LocGridOrbitals<ORBDTYPE>& phi);

void resetProjectors(LocGridOrbitals& phi);
void resetProjectors(LocGridOrbitals<ORBDTYPE>& phi);
};

#endif
4 changes: 2 additions & 2 deletions src/AndersonMix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,6 @@ void AndersonMix<T>::update(T& f, T& work, ostream& os, const bool verbose)
#ifdef TESTING
template class AndersonMix<Solution>;
#else
template class AndersonMix<LocGridOrbitals>;
template class AndersonMix<ExtendedGridOrbitals>;
template class AndersonMix<LocGridOrbitals<ORBDTYPE>>;
template class AndersonMix<ExtendedGridOrbitals<ORBDTYPE>>;
#endif
4 changes: 2 additions & 2 deletions src/DFTsolver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -425,5 +425,5 @@ void DFTsolver<OrbitalsType>::printTimers(std::ostream& os)
solve_tm_.print(os);
}

template class DFTsolver<LocGridOrbitals>;
template class DFTsolver<ExtendedGridOrbitals>;
template class DFTsolver<LocGridOrbitals<ORBDTYPE>>;
template class DFTsolver<ExtendedGridOrbitals<ORBDTYPE>>;
83 changes: 45 additions & 38 deletions src/DMStrategyFactory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,52 @@
#include "ReplicatedMatrix.h"

template <>
DMStrategy<LocGridOrbitals>* DMStrategyFactory<LocGridOrbitals,
DMStrategy<LocGridOrbitals<ORBDTYPE>>*
DMStrategyFactory<LocGridOrbitals<ORBDTYPE>,
dist_matrix::DistMatrix<double>>::createHamiltonianMVP_DMStrategy(MPI_Comm
comm,
std::ostream& os, Ions& ions, Rho<LocGridOrbitals>* rho,
Energy<LocGridOrbitals>* energy, Electrostatic* electrostat,
Hamiltonian<LocGridOrbitals>* hamiltonian,
MGmol<LocGridOrbitals>* mgmol_strategy,
ProjectedMatricesInterface* /*proj_matrices*/, LocGridOrbitals* orbitals,
const bool short_sighted)
std::ostream& os, Ions& ions, Rho<LocGridOrbitals<ORBDTYPE>>* rho,
Energy<LocGridOrbitals<ORBDTYPE>>* energy, Electrostatic* electrostat,
Hamiltonian<LocGridOrbitals<ORBDTYPE>>* hamiltonian,
MGmol<LocGridOrbitals<ORBDTYPE>>* mgmol_strategy,
ProjectedMatricesInterface* /*proj_matrices*/,
LocGridOrbitals<ORBDTYPE>* orbitals, const bool short_sighted)
{
if (short_sighted)
{
DMStrategy<LocGridOrbitals>* dm_strategy
DMStrategy<LocGridOrbitals<ORBDTYPE>>* dm_strategy
= new HamiltonianMVP_DMStrategy<VariableSizeMatrix<sparserow>,
ProjectedMatricesSparse, LocGridOrbitals>(comm, os, ions, rho,
energy, electrostat, hamiltonian, mgmol_strategy, orbitals);
ProjectedMatricesSparse, LocGridOrbitals<ORBDTYPE>>(comm, os,
ions, rho, energy, electrostat, hamiltonian, mgmol_strategy,
orbitals);

return dm_strategy;
}
else
{
DMStrategy<LocGridOrbitals>* dm_strategy
DMStrategy<LocGridOrbitals<ORBDTYPE>>* dm_strategy
= new HamiltonianMVP_DMStrategy<
dist_matrix::DistMatrix<DISTMATDTYPE>,
ProjectedMatrices<dist_matrix::DistMatrix<DISTMATDTYPE>>,
LocGridOrbitals>(comm, os, ions, rho, energy, electrostat,
hamiltonian, mgmol_strategy, orbitals);
LocGridOrbitals<ORBDTYPE>>(comm, os, ions, rho, energy,
electrostat, hamiltonian, mgmol_strategy, orbitals);

return dm_strategy;
}
}

template <>
DMStrategy<LocGridOrbitals>* DMStrategyFactory<LocGridOrbitals,
DMStrategy<LocGridOrbitals<ORBDTYPE>>*
DMStrategyFactory<LocGridOrbitals<ORBDTYPE>,
ReplicatedMatrix>::createHamiltonianMVP_DMStrategy(MPI_Comm comm,
std::ostream& /*os*/, Ions& /*ions*/, Rho<LocGridOrbitals>* /*rho*/,
Energy<LocGridOrbitals>* /*energy*/, Electrostatic* /*electrostat*/,
Hamiltonian<LocGridOrbitals>* /*hamiltonian*/,
MGmol<LocGridOrbitals>* /*mgmol_strategy*/,
std::ostream& /*os*/, Ions& /*ions*/,
Rho<LocGridOrbitals<ORBDTYPE>>* /*rho*/,
Energy<LocGridOrbitals<ORBDTYPE>>* /*energy*/,
Electrostatic* /*electrostat*/,
Hamiltonian<LocGridOrbitals<ORBDTYPE>>* /*hamiltonian*/,
MGmol<LocGridOrbitals<ORBDTYPE>>* /*mgmol_strategy*/,
ProjectedMatricesInterface* /*proj_matrices*/,
LocGridOrbitals* /*orbitals*/, const bool /*short_sighted*/)
LocGridOrbitals<ORBDTYPE>* /*orbitals*/, const bool /*short_sighted*/)
{

std::cerr << "DMStrategy not implemented" << std::endl;
Expand All @@ -52,44 +57,46 @@ DMStrategy<LocGridOrbitals>* DMStrategyFactory<LocGridOrbitals,
}

template <>
DMStrategy<ExtendedGridOrbitals>* DMStrategyFactory<ExtendedGridOrbitals,
DMStrategy<ExtendedGridOrbitals<ORBDTYPE>>*
DMStrategyFactory<ExtendedGridOrbitals<ORBDTYPE>,
dist_matrix::DistMatrix<double>>::createHamiltonianMVP_DMStrategy(MPI_Comm
comm,
std::ostream& os, Ions& ions, Rho<ExtendedGridOrbitals>* rho,
Energy<ExtendedGridOrbitals>* energy, Electrostatic* electrostat,
Hamiltonian<ExtendedGridOrbitals>* hamiltonian,
MGmol<ExtendedGridOrbitals>* mgmol_strategy,
std::ostream& os, Ions& ions, Rho<ExtendedGridOrbitals<ORBDTYPE>>* rho,
Energy<ExtendedGridOrbitals<ORBDTYPE>>* energy, Electrostatic* electrostat,
Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>* hamiltonian,
MGmol<ExtendedGridOrbitals<ORBDTYPE>>* mgmol_strategy,
ProjectedMatricesInterface* /*proj_matrices*/,
ExtendedGridOrbitals* orbitals, const bool short_sighted)
ExtendedGridOrbitals<ORBDTYPE>* orbitals, const bool short_sighted)
{
(void)short_sighted;

DMStrategy<ExtendedGridOrbitals>* dm_strategy
DMStrategy<ExtendedGridOrbitals<ORBDTYPE>>* dm_strategy
= new HamiltonianMVP_DMStrategy<dist_matrix::DistMatrix<DISTMATDTYPE>,
ProjectedMatrices<dist_matrix::DistMatrix<DISTMATDTYPE>>,
ExtendedGridOrbitals>(comm, os, ions, rho, energy, electrostat,
hamiltonian, mgmol_strategy, orbitals);
ExtendedGridOrbitals<ORBDTYPE>>(comm, os, ions, rho, energy,
electrostat, hamiltonian, mgmol_strategy, orbitals);

return dm_strategy;
}

template <>
DMStrategy<ExtendedGridOrbitals>* DMStrategyFactory<ExtendedGridOrbitals,
DMStrategy<ExtendedGridOrbitals<ORBDTYPE>>*
DMStrategyFactory<ExtendedGridOrbitals<ORBDTYPE>,
ReplicatedMatrix>::createHamiltonianMVP_DMStrategy(MPI_Comm comm,
std::ostream& os, Ions& ions, Rho<ExtendedGridOrbitals>* rho,
Energy<ExtendedGridOrbitals>* energy, Electrostatic* electrostat,
Hamiltonian<ExtendedGridOrbitals>* hamiltonian,
MGmol<ExtendedGridOrbitals>* mgmol_strategy,
std::ostream& os, Ions& ions, Rho<ExtendedGridOrbitals<ORBDTYPE>>* rho,
Energy<ExtendedGridOrbitals<ORBDTYPE>>* energy, Electrostatic* electrostat,
Hamiltonian<ExtendedGridOrbitals<ORBDTYPE>>* hamiltonian,
MGmol<ExtendedGridOrbitals<ORBDTYPE>>* mgmol_strategy,
ProjectedMatricesInterface* /*proj_matrices*/,
ExtendedGridOrbitals* orbitals, const bool short_sighted)
ExtendedGridOrbitals<ORBDTYPE>* orbitals, const bool short_sighted)
{
(void)short_sighted;

DMStrategy<ExtendedGridOrbitals>* dm_strategy
DMStrategy<ExtendedGridOrbitals<ORBDTYPE>>* dm_strategy
= new HamiltonianMVP_DMStrategy<ReplicatedMatrix,
ProjectedMatrices<ReplicatedMatrix>, ExtendedGridOrbitals>(comm, os,
ions, rho, energy, electrostat, hamiltonian, mgmol_strategy,
orbitals);
ProjectedMatrices<ReplicatedMatrix>,
ExtendedGridOrbitals<ORBDTYPE>>(comm, os, ions, rho, energy,
electrostat, hamiltonian, mgmol_strategy, orbitals);

return dm_strategy;
}
4 changes: 2 additions & 2 deletions src/DavidsonSolver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -857,6 +857,6 @@ void DavidsonSolver<OrbitalsType, MatrixType>::printTimers(std::ostream& os)
target_tm_.print(os);
}

template class DavidsonSolver<ExtendedGridOrbitals,
template class DavidsonSolver<ExtendedGridOrbitals<ORBDTYPE>,
dist_matrix::DistMatrix<DISTMATDTYPE>>;
template class DavidsonSolver<ExtendedGridOrbitals, ReplicatedMatrix>;
template class DavidsonSolver<ExtendedGridOrbitals<ORBDTYPE>, ReplicatedMatrix>;
9 changes: 5 additions & 4 deletions src/DotProductDiagonal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
#include "SquareLocalMatrices.h"

template <>
double DotProductDiagonal<ExtendedGridOrbitals>::dotProduct(
ExtendedGridOrbitals& phi0, const ExtendedGridOrbitals& phi1)
double DotProductDiagonal<ExtendedGridOrbitals<ORBDTYPE>>::dotProduct(
ExtendedGridOrbitals<ORBDTYPE>& phi0,
const ExtendedGridOrbitals<ORBDTYPE>& phi1)
{
const int chromatic_number = phi0.chromatic_number();
std::vector<DISTMATDTYPE> ss(chromatic_number);
Expand All @@ -29,8 +30,8 @@ double DotProductDiagonal<ExtendedGridOrbitals>::dotProduct(
}

template <>
double DotProductDiagonal<LocGridOrbitals>::dotProduct(
LocGridOrbitals& phi0, const LocGridOrbitals& phi1)
double DotProductDiagonal<LocGridOrbitals<ORBDTYPE>>::dotProduct(
LocGridOrbitals<ORBDTYPE>& phi0, const LocGridOrbitals<ORBDTYPE>& phi1)
{
const int numst = phi0.numst();
ProjectedMatricesInterface* proj_matrices = phi0.getProjMatrices();
Expand Down
4 changes: 2 additions & 2 deletions src/DotProductSimple.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@ double DotProductSimple<T>::dotProduct(T& phi0, const T& phi1)
return proj_matrices->dotProductSimple(ss);
}

template class DotProductSimple<LocGridOrbitals>;
template class DotProductSimple<ExtendedGridOrbitals>;
template class DotProductSimple<LocGridOrbitals<ORBDTYPE>>;
template class DotProductSimple<ExtendedGridOrbitals<ORBDTYPE>>;
4 changes: 2 additions & 2 deletions src/DotProductWithDM.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@ double DotProductWithDM<T>::dotProduct(T& phi0, const T& phi1)
return proj_matrices->dotProductWithDM(ss);
}

template class DotProductWithDM<LocGridOrbitals>;
template class DotProductWithDM<ExtendedGridOrbitals>;
template class DotProductWithDM<LocGridOrbitals<ORBDTYPE>>;
template class DotProductWithDM<ExtendedGridOrbitals<ORBDTYPE>>;
4 changes: 2 additions & 2 deletions src/DotProductWithInvS.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@ double DotProductWithInvS<T>::dotProduct(T& phi0, const T& phi1)
return proj_matrices->dotProductWithInvS(ss);
}

template class DotProductWithInvS<LocGridOrbitals>;
template class DotProductWithInvS<ExtendedGridOrbitals>;
template class DotProductWithInvS<LocGridOrbitals<ORBDTYPE>>;
template class DotProductWithInvS<ExtendedGridOrbitals<ORBDTYPE>>;
4 changes: 2 additions & 2 deletions src/EigenDMStrategy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,5 @@ int EigenDMStrategy<OrbitalsType>::update(OrbitalsType& orbitals)
return 0;
}

template class EigenDMStrategy<LocGridOrbitals>;
template class EigenDMStrategy<ExtendedGridOrbitals>;
template class EigenDMStrategy<LocGridOrbitals<ORBDTYPE>>;
template class EigenDMStrategy<ExtendedGridOrbitals<ORBDTYPE>>;
16 changes: 9 additions & 7 deletions src/Electrostatic.cc
Original file line number Diff line number Diff line change
Expand Up @@ -336,14 +336,16 @@ void Electrostatic::computeVh(const Ions& ions, Rho<T>& rho, Potentials& pot)
solve_tm_.stop();
}

template void Electrostatic::computeVhRho(Rho<LocGridOrbitals>& rho);
template void Electrostatic::computeVhRho(Rho<LocGridOrbitals<ORBDTYPE>>& rho);
template void Electrostatic::computeVh(
const Ions& ions, Rho<LocGridOrbitals>& rho, Potentials& pot);
const Ions& ions, Rho<LocGridOrbitals<ORBDTYPE>>& rho, Potentials& pot);
template void Electrostatic::computeVh(const pb::GridFunc<POTDTYPE>& vhinit,
const Ions& ions, Rho<LocGridOrbitals>& rho, Potentials& pot);
const Ions& ions, Rho<LocGridOrbitals<ORBDTYPE>>& rho, Potentials& pot);

template void Electrostatic::computeVhRho(Rho<ExtendedGridOrbitals>& rho);
template void Electrostatic::computeVh(
const Ions& ions, Rho<ExtendedGridOrbitals>& rho, Potentials& pot);
template void Electrostatic::computeVhRho(
Rho<ExtendedGridOrbitals<ORBDTYPE>>& rho);
template void Electrostatic::computeVh(const Ions& ions,
Rho<ExtendedGridOrbitals<ORBDTYPE>>& rho, Potentials& pot);
template void Electrostatic::computeVh(const pb::GridFunc<POTDTYPE>& vhinit,
const Ions& ions, Rho<ExtendedGridOrbitals>& rho, Potentials& pot);
const Ions& ions, Rho<ExtendedGridOrbitals<ORBDTYPE>>& rho,
Potentials& pot);
4 changes: 2 additions & 2 deletions src/Energy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -199,5 +199,5 @@ double Energy<T>::evaluateTotal(const double ts, // in [Ha]
return energy_sc;
}

template class Energy<LocGridOrbitals>;
template class Energy<ExtendedGridOrbitals>;
template class Energy<LocGridOrbitals<ORBDTYPE>>;
template class Energy<ExtendedGridOrbitals<ORBDTYPE>>;
4 changes: 2 additions & 2 deletions src/EnergySpreadPenalty.cc
Original file line number Diff line number Diff line change
Expand Up @@ -231,5 +231,5 @@ double EnergySpreadPenalty<T>::evaluateEnergy(const T& phi)
return alpha_ * total_energy;
}

template class EnergySpreadPenalty<LocGridOrbitals>;
template class EnergySpreadPenalty<ExtendedGridOrbitals>;
template class EnergySpreadPenalty<LocGridOrbitals<ORBDTYPE>>;
template class EnergySpreadPenalty<ExtendedGridOrbitals<ORBDTYPE>>;
Loading