This file is indexed.

/usr/include/libmints/molecule.h is in libpsi3-dev 3.4.0-6build2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#ifndef _psi_src_lib_libmints_molecule_h_
#define _psi_src_lib_libmints_molecule_h_

/*!
    \file libmints/molecule.h
    \ingroup MINTS
*/

#include <vector>
#include <string>
#include <cstdio>

#include <libmints/ref.h>
#include <libmints/vector3.h>
#include <libmints/vector.h>

#include <libpsio/psio.hpp>
#include <libchkpt/chkpt.hpp>

extern FILE *outfile;

namespace psi {

//! Molecule information class.
class Molecule
{
public:
    typedef struct atom_info {
        double x, y, z;
        int Z;
        double charge;
        double mass;
        std::string label;
    };
    
protected:
    /// Number of atoms.
    int natoms_;
    /// Atom info vector
    std::vector<atom_info> atoms_;
    /// Symmetry information about the molecule
    int nirreps_;
    /// Zero it out
    void clear();
    
public:
    Molecule();
    virtual ~Molecule();
    
    /// Pull information from a chkpt object created from psio
    void init_with_chkpt(Ref<psi::PSIO> &psio);
    /// Pull information from the chkpt object passed
    void init_with_chkpt(Ref<psi::Chkpt> &chkpt);
    
    /// Add an atom to the molecule
    void add_atom(int Z, double x, double y, double z,
                  const char * = 0, double mass = 0.0,
                  int have_charge = 0, double charge = 0.0);

    /// Number of atoms
    int natom() const { return natoms_; }
    /// Nuclear charge of atom
    int Z(int atom) const { return atoms_[atom].Z; }
    // x position of atom
    double x(int atom) const { return atoms_[atom].x; }
    // y position of atom
    double y(int atom) const { return atoms_[atom].y; }
    // z position of atom
    double z(int atom) const { return atoms_[atom].z; }
    /// Return reference to atom_info struct for atom
    const atom_info &r(int atom) const { return atoms_[atom]; }
    /// Return copy of atom_info for atom
    atom_info r(int atom) { return atoms_[atom]; }
    /// Returns a Vector3 with x, y, z position of atom
    const Vector3 xyz(int atom) const { return Vector3(atoms_[atom].x, atoms_[atom].y, atoms_[atom].z); }
    /// Returns mass atom atom
    double mass(int atom) const;
    /// Returns label of atom
    const std::string label(int atom) const;
    /// Returns charge of atom
    double charge(int atom) const { return atoms_[atom].charge; }
    
    /// Tests to see of an atom is at the passed position with a given tolerance
    int atom_at_position(double *, double tol = 0.05) const;
    
    /// Computes center of mass of molecule (does not translate molecule)
    Vector3 center_of_mass() const;
    /// Computes nuclear repulsion energy
    double nuclear_repulsion_energy();
    /// Computes number repulsion energy derivatives. Free with delete[]
    double* nuclear_repulsion_energy_deriv1();
    
    /// Returns the nuclear contribution to the dipole moment
    SimpleVector nuclear_dipole_contribution();
    /// Returns the nuclear contribution to the quadrupole moment
    SimpleVector nuclear_quadrupole_contribution();
    
    /// Translates molecule by r
    void translate(const Vector3& r);
    /// Moves molecule to center of mass
    void move_to_com();
    
    /// Returns the number of irreps
    int nirrep() const { return nirreps_; }
    /// Sets the number of irreps
    void nirrep(int nirreps) { nirreps_ = nirreps; }
    
    /// Print the molecule
    void print(FILE *out = outfile);
};

}

#endif