33 #ifndef MADNESS_CHEM_MOLECULE_H__INCLUDED
34 #define MADNESS_CHEM_MOLECULE_H__INCLUDED
60 explicit Atom(
double x,
double y,
double z,
double q,
unsigned int atomic_number)
61 : x(x), y(y), z(z), q(q), atomic_number(atomic_number) {}
64 : x(a.x), y(a.y), z(a.z), q(a.q), atomic_number(a.atomic_number) {}
68 : x(0), y(0), z(0), q(0), atomic_number(0) {}
75 template <
typename Archive>
86 std::vector<Atom> atoms;
87 std::vector<double> rcut;
89 enum {atomic, angstrom} units;
91 madness::Tensor<double> field;
93 void swapaxes(
int ix,
int iy);
95 template <
typename opT>
96 bool test_for_op(
double xaxis,
double yaxis,
double zaxis, opT
op)
const;
98 bool test_for_c2(
double xaxis,
double yaxis,
double zaxis)
const;
100 bool test_for_sigma(
double xaxis,
double yaxis,
double zaxis)
const;
102 bool test_for_inverse()
const;
111 Molecule() : atoms(), rcut(), eprec(1e-4), core_pot(), field(3
L) {};
138 double core_eval(
int atom,
unsigned int core,
int m,
double x,
double y,
double z)
const;
140 double core_derivative(
int atom,
int axis,
unsigned int core,
int m,
double x,
double y,
double z)
const;
146 void add_atom(
double x,
double y,
double z,
double q,
int atn);
220 template <
typename Archive>
222 ar & atoms & rcut & eprec & core_pot;
double core_eval(int atom, unsigned int core, int m, double x, double y, double z) const
Definition: chem/molecule.cc:648
unsigned int n_core_orb(unsigned int atn) const
Definition: chem/molecule.h:123
void identify_point_group()
Definition: chem/molecule.cc:417
void serialize(Archive &ar)
Definition: chem/molecule.h:76
unsigned int n_core_orb_base(const unsigned int atn) const
Definition: chem/corepotential.h:173
Header to declare stuff which has not yet found a home.
unsigned int get_atom_number(unsigned int i)
Definition: chem/molecule.cc:165
unsigned int get_core_l(unsigned int atn, unsigned int core) const
Definition: chem/corepotential.h:187
double get_eprec() const
Definition: chem/molecule.h:178
std::vector< madness::Vector< double, 3 > > get_all_coords_vec() const
Definition: chem/molecule.cc:188
void add_atom(double x, double y, double z, double q, int atn)
Definition: chem/molecule.cc:151
double q
Coordinates and charge in atomic units.
Definition: chem/molecule.h:57
void set_atom_coords(unsigned int i, double x, double y, double z)
Definition: chem/molecule.cc:170
void set_atom_charge(unsigned int i, double zeff)
Definition: chem/molecule.cc:160
const double L
Definition: 3dharmonic.cc:123
double z
Definition: chem/molecule.h:57
::std::string string
Definition: gtest-port.h:872
void set_eprec(double value)
Definition: chem/corepotential.cc:372
double smallest_length_scale() const
Definition: chem/molecule.cc:315
double nuclear_attraction_potential(double x, double y, double z) const
Definition: chem/molecule.cc:579
Molecule()
Makes a molecule with zero atoms.
Definition: chem/molecule.h:111
double get_core_bc(unsigned int atn, unsigned int c) const
Definition: chem/molecule.h:134
Atom()
Default construct makes a zero charge ghost atom at origin.
Definition: chem/molecule.h:67
double nuclear_charge_density(double x, double y, double z) const
Definition: chem/molecule.cc:622
madness::Vector< double, 3 > get_coords() const
Definition: chem/molecule.h:71
double core_derivative(int atom, int axis, unsigned int core, int m, double x, double y, double z) const
Definition: chem/molecule.cc:657
void set_rcut(double value)
Definition: chem/molecule.cc:217
void set_all_coords(const madness::Tensor< double > &newcoords)
Definition: chem/molecule.cc:199
double nuclear_repulsion_energy_pseudo() const
Definition: chem/molecule.cc:264
std::string guess_file() const
Definition: chem/corepotential.h:177
Defines and implements most of Tensor.
double nuclear_repulsion_derivative(int i, int j) const
Definition: chem/molecule.cc:296
std::vector< double > atomic_radii
Definition: chem/molecule.h:162
int natom() const
Definition: chem/molecule.h:148
void center()
Moves the center of nuclear charge to the origin.
Definition: chem/molecule.cc:325
void read_file(const std::string &filename)
Definition: chem/molecule.cc:89
double get_core_bc(unsigned int atn, unsigned int core) const
Definition: chem/corepotential.h:191
double mol_nuclear_charge_density(double x, double y, double z) const
Definition: chem/molecule.cc:568
madness::Tensor< double > get_all_coords() const
Definition: chem/molecule.cc:177
Vector< T, 1 > vec(T x)
Your friendly neighborhood factory function.
Definition: array.h:456
bool is_potential_defined_atom(int i) const
Definition: chem/molecule.h:144
double nuclear_attraction_potential_derivative(int atom, int axis, double x, double y, double z) const
Definition: chem/molecule.cc:602
FLOAT a(int j, FLOAT z)
Definition: y1.cc:86
unsigned int atomic_number
Atomic number.
Definition: chem/molecule.h:58
bool is_defined(const unsigned int atn) const
Definition: chem/corepotential.h:165
unsigned int get_core_l(unsigned int atn, unsigned int c) const
Definition: chem/molecule.h:130
double total_nuclear_charge() const
Definition: chem/molecule.cc:560
double inter_atomic_distance(unsigned int i, unsigned int j) const
Definition: chem/molecule.cc:243
void set_eprec(double value)
updates rcuts with given eprec
Definition: chem/molecule.cc:209
unsigned int n_core_orb_all() const
Definition: chem/molecule.cc:636
double nuclear_repulsion_energy() const
Definition: chem/molecule.cc:250
Abstract Atom class.
Definition: DFcode/molecule.h:54
double core_potential_derivative(int atom, int axis, double x, double y, double z) const
Definition: chem/molecule.cc:687
double x
Definition: chem/molecule.h:57
Definition: chem/molecule.h:55
double y
Definition: chem/molecule.h:57
double bounding_cube() const
Returns the half width of the bounding cube.
Definition: chem/molecule.cc:550
const double m
Definition: gfit.cc:199
Atom(const Atom &a)
Definition: chem/molecule.h:63
void set_rcut(double value)
Definition: chem/corepotential.cc:382
Definition: chem/molecule.h:83
void print() const
Definition: chem/molecule.cc:228
std::ostream & operator<<(std::ostream &s, const ContractedGaussianShell &c)
Definition: chem/molecularbasis.cc:38
void read_core_file(const std::string &filename)
Definition: chem/molecule.cc:702
std::string pointgroup_
Definition: chem/molecule.h:108
Atom(double x, double y, double z, double q, unsigned int atomic_number)
Definition: chem/molecule.h:60
void set_core_eprec(double value)
Definition: chem/molecule.h:170
Tensor< double > op(const Tensor< double > &x)
Definition: kain.cc:508
std::string guess_file() const
Definition: chem/molecule.h:119
void serialize(Archive &ar)
Definition: chem/molecule.h:221
Definition: chem/corepotential.h:148
Holds machinery to set up Functions/FuncImpls using various Factories and Interfaces.
Definition: chem/atomutil.cc:45
bool is_potential_defined(unsigned int atn) const
Definition: chem/molecule.h:142
const double c
Definition: gfit.cc:200
void orient()
Centers and orients the molecule in a standard manner.
Definition: chem/molecule.cc:491
void set_core_rcut(double value)
Definition: chem/molecule.h:174
const Atom & get_atom(unsigned int i) const
Definition: chem/molecule.cc:223
double molecular_core_potential(double x, double y, double z) const
Definition: chem/molecule.cc:670
double nuclear_dipole(int axis) const
Definition: chem/molecule.cc:278