MADNESS 0.10.1
molecular_functors.h
Go to the documentation of this file.
1//
2// Created by Florian Bischoff on 5/25/22.
3//
4#ifndef MADNESS_MOLECULAR_FUNCTORS_H
5#define MADNESS_MOLECULAR_FUNCTORS_H
6
9#include<madness/mra/mra.h>
11namespace madchem {
12
13
14
16private:
19public:
22
23 double operator()(const madness::coord_3d& x) const {
24 return aobasis.eval_guess_density(molecule, x[0], x[1], x[2]);
25 }
26
27 std::vector<madness::coord_3d> special_points() const {return molecule.get_all_coords_vec();}
28};
29
30
32private:
34
35public:
39
40 double operator()(const madness::coord_3d& x) const {
41 return aofunc(x[0], x[1], x[2]);
42 }
43
44 std::vector<madness::coord_3d> special_points() const {
45 return std::vector<madness::coord_3d>(1,aofunc.get_coords_vec());
46 }
47};
48
49
51private:
53 const int iatom;
54
55public:
58
59 double operator()(const madness::coord_3d& x) const {
61 const madness::coord_3d coord={atom.x,atom.y,atom.z};
62 double r = (x-coord).normf();
65 }
66
67 std::vector<madness::coord_3d> special_points() const {
68 return std::vector<madness::coord_3d>(1,molecule.get_atom(iatom).get_coords());
69 }
70};
71
73private:
75 const int atom;
76 const int axis;
77
78public:
82
83 double operator()(const madness::coord_3d& x) const {
85 }
86
87 std::vector<madness::coord_3d> special_points() const {
88 return std::vector<madness::coord_3d>(1,molecule.get_atom(atom).get_coords());
89 }
90};
91
93private:
95 const int atom;
96 const int iaxis, jaxis;
97
98public:
103
104 double operator()(const madness::coord_3d& x) const {
106 iaxis, jaxis, x[0], x[1], x[2]);
107 }
108
109 std::vector<madness::coord_3d> special_points() const {
110 return std::vector<madness::coord_3d>(1,molecule.get_atom(atom).get_coords());
111 }
112};
113
114
116private:
118 const int atom;
119 const int axis;
120 std::vector<madness::coord_3d> specialpt;
121public:
124
125 double operator()(const madness::coord_3d& r) const {
126 return molecule.core_potential_derivative(atom, axis, r[0], r[1], r[2]);
127 }
128};
129
130
131
132}
133#endif //MADNESS_MOLECULAR_FUNCTORS_H
Definition molecular_functors.h:50
const madness::Molecule & molecule
Definition molecular_functors.h:52
std::vector< madness::coord_3d > special_points() const
Override this to return list of special points to be refined more deeply.
Definition molecular_functors.h:67
const int iatom
Definition molecular_functors.h:53
AtomicAttractionFunctor(const madness::Molecule &molecule, int iatom)
Definition molecular_functors.h:56
double operator()(const madness::coord_3d &x) const
Definition molecular_functors.h:59
Definition molecular_functors.h:31
AtomicBasisFunctor(const madness::AtomicBasisFunction &aofunc)
Definition molecular_functors.h:36
double operator()(const madness::coord_3d &x) const
Definition molecular_functors.h:40
std::vector< madness::coord_3d > special_points() const
Override this to return list of special points to be refined more deeply.
Definition molecular_functors.h:44
const madness::AtomicBasisFunction aofunc
Definition molecular_functors.h:33
Definition molecular_functors.h:115
CorePotentialDerivativeFunctor(const madness::Molecule &molecule, int atom, int axis)
Definition molecular_functors.h:122
double operator()(const madness::coord_3d &r) const
Definition molecular_functors.h:125
const int atom
Definition molecular_functors.h:118
const int axis
Definition molecular_functors.h:119
std::vector< madness::coord_3d > specialpt
Definition molecular_functors.h:120
const madness::Molecule & molecule
Definition molecular_functors.h:117
Definition molecular_functors.h:72
double operator()(const madness::coord_3d &x) const
Definition molecular_functors.h:83
std::vector< madness::coord_3d > special_points() const
Override this to return list of special points to be refined more deeply.
Definition molecular_functors.h:87
const int atom
Definition molecular_functors.h:75
const madness::Molecule & molecule
Definition molecular_functors.h:74
const int axis
Definition molecular_functors.h:76
MolecularDerivativeFunctor(const madness::Molecule &molecule, int atom, int axis)
Definition molecular_functors.h:79
Definition molecular_functors.h:15
const madness::Molecule & molecule
Definition molecular_functors.h:17
std::vector< madness::coord_3d > special_points() const
Override this to return list of special points to be refined more deeply.
Definition molecular_functors.h:27
const madness::AtomicBasisSet & aobasis
Definition molecular_functors.h:18
double operator()(const madness::coord_3d &x) const
Definition molecular_functors.h:23
MolecularGuessDensityFunctor(const madness::Molecule &molecule, const madness::AtomicBasisSet &aobasis)
Definition molecular_functors.h:20
Definition molecular_functors.h:92
double operator()(const madness::coord_3d &x) const
Definition molecular_functors.h:104
const int jaxis
Definition molecular_functors.h:96
MolecularSecondDerivativeFunctor(const madness::Molecule &molecule, int atom, int iaxis, int jaxis)
Definition molecular_functors.h:99
const int atom
Definition molecular_functors.h:95
const int iaxis
Definition molecular_functors.h:96
const madness::Molecule & molecule
Definition molecular_functors.h:94
std::vector< madness::coord_3d > special_points() const
Override this to return list of special points to be refined more deeply.
Definition molecular_functors.h:109
Definition molecule.h:58
double y
Definition molecule.h:60
double x
Definition molecule.h:60
double z
Definition molecule.h:60
madness::Vector< double, 3 > get_coords() const
Definition molecule.h:99
double q
Coordinates and charge in atomic units.
Definition molecule.h:60
Used to represent one basis function from a shell on a specific center.
Definition madness/chem/molecularbasis.h:405
madness::Vector< double, 3 > get_coords_vec() const
Definition madness/chem/molecularbasis.h:455
Contracted Gaussian basis.
Definition madness/chem/molecularbasis.h:465
double eval_guess_density(const Molecule &molecule, double x, double y, double z) const
Evaluates the guess density.
Definition madness/chem/molecularbasis.h:642
Abstract base class interface required for functors used as input to Functions.
Definition function_interface.h:68
Definition molecule.h:124
std::vector< madness::Vector< double, 3 > > get_all_coords_vec() const
Definition molecule.cc:408
std::vector< double > get_rcut() const
Definition molecule.h:415
const Atom & get_atom(unsigned int i) const
Definition molecule.cc:447
double nuclear_attraction_potential_second_derivative(int atom, int iaxis, int jaxis, double x, double y, double z) const
the second derivative of the (smoothed) nuclear potential Z/r
Definition molecule.cc:1039
double core_potential_derivative(int atom, int axis, double x, double y, double z) const
Definition molecule.cc:1131
double nuclear_attraction_potential_derivative(int atom, int axis, double x, double y, double z) const
Definition molecule.cc:1008
Provides typedefs to hide use of templates and to increase interoperability.
Main include file for MADNESS and defines Function interface.
Definition molecular_functors.h:11
double smoothed_potential(double r)
Smoothed 1/r potential.
Definition atomutil.cc:220