MADNESS 0.10.1
QCPropertyInterface.h
Go to the documentation of this file.
1#ifndef MADNESS_QCPROPERTYINTERFACE_H
2#define MADNESS_QCPROPERTYINTERFACE_H
3
4#include <madness/mra/mra.h>
6//class NuclearCorrelationFactor;
7
8namespace madness {
9
10/// class implementing properties of QC models
12
13 virtual std::string name() const = 0;
14
15 virtual bool selftest() = 0;
16
19 const std::shared_ptr<NuclearCorrelationFactor> ncf = 0) const {
20 print("nuclear_derivative not implemented in ", name());
21 MADNESS_EXCEPTION("feature not implemented", 1);
22 return Tensor<double>();
23 }
24
25 virtual real_function_3d density() const {
26 print("density not implemented in ", name());
27 MADNESS_EXCEPTION("feature not implemented", 1);
28 }
29
31 print("no_cusp_density not implemented in ", name());
32 MADNESS_EXCEPTION("feature not implemented", 1);
33 }
34
35 virtual real_function_3d spindensity(const int spin) const {
36 MADNESS_ASSERT(spin == 0 or spin == 1); // alpha or beta
37 print("spindensity not implemented in ", name());
38 MADNESS_EXCEPTION("feature not implemented", 1);
39 }
40
41 virtual real_function_3d no_cusp_spindensity(const int spin) const {
42 MADNESS_ASSERT(spin == 0 or spin == 1); // alpha or beta
43 print("no_cusp_spindensity not implemented in ", name());
44 MADNESS_EXCEPTION("feature not implemented", 1);
45 }
46
47 virtual std::vector<double> multipole_moment(
48 const real_function_3d &density, const int l, const Molecule &molecule,
49 const std::shared_ptr<NuclearCorrelationFactor> ncf = 0) const {
50 print("dipole moment not implemented in ", name());
51 MADNESS_EXCEPTION("feature not implemented", 1);
52 }
53};
54
55} // namespace madness
56
57#endif //MADNESS_QCPROPERTYINTERFACE_H
Definition molecule.h:124
class implementing properties of QC models
Definition QCPropertyInterface.h:11
virtual std::string name() const =0
virtual Tensor< double > nuclear_derivative(const real_function_3d &density, const Molecule &molecule, const std::shared_ptr< NuclearCorrelationFactor > ncf=0) const
Definition QCPropertyInterface.h:17
virtual real_function_3d spindensity(const int spin) const
Definition QCPropertyInterface.h:35
virtual real_function_3d no_cusp_density() const
Definition QCPropertyInterface.h:30
virtual std::vector< double > multipole_moment(const real_function_3d &density, const int l, const Molecule &molecule, const std::shared_ptr< NuclearCorrelationFactor > ncf=0) const
Definition QCPropertyInterface.h:47
virtual real_function_3d density() const
Definition QCPropertyInterface.h:25
virtual real_function_3d no_cusp_spindensity(const int spin) const
Definition QCPropertyInterface.h:41
A tensor is a multidimension array.
Definition tensor.h:317
#define MADNESS_EXCEPTION(msg, value)
Macro for throwing a MADNESS exception.
Definition madness_exception.h:119
#define MADNESS_ASSERT(condition)
Assert a condition that should be free of side-effects since in release builds this might be a no-op.
Definition madness_exception.h:134
Main include file for MADNESS and defines Function interface.
Namespace for all elements and tools of MADNESS.
Definition DFParameters.h:10
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:225
Definition dirac-hatom.cc:108
static Molecule molecule
Definition testperiodicdft.cc:38