34 const Crystal& crystal_structure,
36 const std::vector<Vector3D>& explicit_centers_crystal,
37 Real decay_length_bohr,
38 const std::map<std::string, std::vector<int>>& trial_shells = {}) {
39 if (explicit_centers_crystal.empty()) {
40 return std::make_unique<PlanewavePseudoAtomicOrbitalSet>(
41 crystal_structure, pseudopotential_set, trial_shells);
43 std::vector<HydrogenicOrbital> orbitals;
44 orbitals.reserve(explicit_centers_crystal.size());
45 for (
const Vector3D& center : explicit_centers_crystal) {
46 orbitals.push_back({center, decay_length_bohr});
48 return std::make_unique<PlanewaveHydrogenicOrbitalSet>(std::move(orbitals));
std::unique_ptr< PlanewaveLocalOrbitalSet > create_planewave_local_orbital_set(const Crystal &crystal_structure, const PseudopotentialSet &pseudopotential_set, const std::vector< Vector3D > &explicit_centers_crystal, Real decay_length_bohr, const std::map< std::string, std::vector< int > > &trial_shells={})