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 
8 namespace 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::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 std::string name() const =0
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 real_function_3d density() const
Definition: QCPropertyInterface.h:25
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 no_cusp_spindensity(const int spin) const
Definition: QCPropertyInterface.h:41
#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.
File holds all helper structures necessary for the CC_Operator and CC2 class.
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