DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
SlaterBasis.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (c) 2017-2025 The Regents of the University of Michigan and DFT-FE
4// authors.
5//
6// This file is part of the DFT-FE code.
7//
8// The DFT-FE code is free software; you can use it, redistribute
9// it, and/or modify it under the terms of the GNU Lesser General
10// Public License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12// The full text of the license can be found in the file LICENSE at
13// the top level of the DFT-FE distribution.
14//
15// ---------------------------------------------------------------------
16//
17// @author Arghadwip Paul, Bikash Kanungo
18//
19
20#ifndef DFTFE_SLATERBASIS_H
21#define DFTFE_SLATERBASIS_H
22
23#include <vector>
24#include <unordered_map>
25#include <string>
26#include <utility>
27#include "AtomicBasis.h"
28namespace dftfe
29{
31 {
32 int n; // principal quantum number
33 int l; // azimuthal (angular) quantum number
34 int m; // magnetic quantum number
35 double alpha; // exponent of the basis
36 double normConst; // normalization constant for the radial part
37 };
38
40 {
41 const std::string * symbol; // atom symbol
42 const double * center; // atom center coordinates
43 const SlaterPrimitive *sp; // pointer to the SlaterPrimitive
44 };
45
46 class SlaterBasis : public AtomicBasis
47 {
48 public:
49 SlaterBasis(const double rTol = 1e-10,
50 const double angleTol = 1e-10); // Constructor
51 ~SlaterBasis(); // Destructor
52
53
54 virtual void
56 const std::vector<std::pair<std::string, std::vector<double>>>
57 & atomCoords,
58 const std::unordered_map<std::string, std::string> &atomBasisFileNames)
59 override;
60
61 virtual int
62 getNumBasis() const override;
63
64 virtual std::vector<double>
65 getBasisValue(const unsigned int basisId,
66 const std::vector<double> &x) const override;
67
68 virtual std::vector<double>
69 getBasisGradient(const unsigned int basisId,
70 const std::vector<double> &x) const override;
71
72 virtual std::vector<double>
73 getBasisLaplacian(const unsigned int basisId,
74 const std::vector<double> &x) const override;
75
76 private:
77 std::unordered_map<std::string, std::vector<SlaterPrimitive *>>
79 std::vector<SlaterBasisInfo> d_slaterBasisInfo;
80 std::vector<std::pair<std::string, std::vector<double>>>
82 double d_rTol;
83 double d_angleTol;
84 };
85} // namespace dftfe
86#endif // DFTFE_SLATERBASIS_H
Definition AtomicBasis.h:31
virtual std::vector< double > getBasisLaplacian(const unsigned int basisId, const std::vector< double > &x) const override
double d_angleTol
Definition SlaterBasis.h:83
std::vector< SlaterBasisInfo > d_slaterBasisInfo
Definition SlaterBasis.h:79
SlaterBasis(const double rTol=1e-10, const double angleTol=1e-10)
virtual std::vector< double > getBasisValue(const unsigned int basisId, const std::vector< double > &x) const override
std::vector< std::pair< std::string, std::vector< double > > > d_atomSymbolsAndCoords
Definition SlaterBasis.h:81
double d_rTol
Definition SlaterBasis.h:82
std::unordered_map< std::string, std::vector< SlaterPrimitive * > > d_atomToSlaterPrimitivesPtr
Definition SlaterBasis.h:78
virtual std::vector< double > getBasisGradient(const unsigned int basisId, const std::vector< double > &x) const override
virtual void constructBasisSet(const std::vector< std::pair< std::string, std::vector< double > > > &atomCoords, const std::unordered_map< std::string, std::string > &atomBasisFileNames) override
virtual int getNumBasis() const override
Definition pseudoPotentialToDftfeConverter.cc:34
@ e
Definition ExcSSDFunctionalBaseClass.h:52
Definition SlaterBasis.h:40
const double * center
Definition SlaterBasis.h:42
const SlaterPrimitive * sp
Definition SlaterBasis.h:43
const std::string * symbol
Definition SlaterBasis.h:41
Definition SlaterBasis.h:31
int n
Definition SlaterBasis.h:32
int m
Definition SlaterBasis.h:34
double normConst
Definition SlaterBasis.h:36
int l
Definition SlaterBasis.h:33
double alpha
Definition SlaterBasis.h:35