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