This file is indexed.

/usr/include/chemps2/Irreps.h is in libchemps2-dev 1.8.5-1.

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
   CheMPS2: a spin-adapted implementation of DMRG for ab initio quantum chemistry
   Copyright (C) 2013-2018 Sebastian Wouters

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License along
   with this program; if not, write to the Free Software Foundation, Inc.,
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#ifndef IRREPS_CHEMPS2_H
#define IRREPS_CHEMPS2_H

#include <string>
using std::string;

namespace CheMPS2{
/** Irreps class.
    \author Sebastian Wouters <sebastianwouters@gmail.com>
    \date February 7, 2013
    
    This class contains the symmetry group and irrep conventions. The program requires Abelian point groups with real character tables, with hence \f$I_{\alpha} \otimes I_{\alpha} = I_{trivial}\f$.
  
    \section irreps_conv Irrep conventions
    
    The same conventions as in Psi4 (beta5) are used. For convenience, they are listed below:\n
    \latexonly
    \begin{tabular}{|l|cccccccc|}
    \hline
      Symmetry Conventions & \multicolumn{8}{c|}{ Irrep Number \& Name } \\
    \hline
      Group Number \& Name & 0  & 1   & 2   & 3   & 4  & 5   & 6   & 7   \\
    \hline
      0: c1                & A  &     &     &     &    &     &     &     \\
      1: ci                & Ag & Au  &     &     &    &     &     &     \\
      2: c2                & A  & B   &     &     &    &     &     &     \\
      3: cs                & A' & A'' &     &     &    &     &     &     \\
      4: d2                & A  & B1  & B2  & B3  &    &     &     &     \\
      5: c2v               & A1 & A2  & B1  & B2  &    &     &     &     \\
      6: c2h               & Ag & Bg  & Au  & Bu  &    &     &     &     \\
      7: d2h               & Ag & B1g & B2g & B3g & Au & B1u & B2u & B3u \\
    \hline
    \end{tabular}
    \endlatexonly
    \htmlonly
    <table border="1">
    <tr><td> Symmetry Conventions </td><td colspan="8"> Irrep Number & Name </td></tr>
    <tr><td> Group Number & Name </td><td> 0  </td><td> 1   </td><td> 2   </td><td> 3   </td><td> 4  </td><td> 5   </td><td> 6   </td><td> 7   </td></tr>
    <tr><td> 0: c1               </td><td> A  </td><td>     </td><td>     </td><td>     </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 1: ci               </td><td> Ag </td><td> Au  </td><td>     </td><td>     </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 2: c2               </td><td> A  </td><td> B   </td><td>     </td><td>     </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 3: cs               </td><td> A' </td><td> A'' </td><td>     </td><td>     </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 4: d2               </td><td> A  </td><td> B1  </td><td> B2  </td><td> B3  </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 5: c2v              </td><td> A1 </td><td> A2  </td><td> B1  </td><td> B2  </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 6: c2h              </td><td> Ag </td><td> Bg  </td><td> Au  </td><td> Bu  </td><td>    </td><td>     </td><td>     </td><td>     </td></tr>
    <tr><td> 7: d2h              </td><td> Ag </td><td> B1g </td><td> B2g </td><td> B3g </td><td> Au </td><td> B1u </td><td> B2u </td><td> B3u </td></tr>
    </table>
    \endhtmlonly
    Note that these conventions allow to use the XOR operation for irrep multiplication. */
   class Irreps{

      public:
      
         //! Constructor
         Irreps();
         
         //! Constructor 2
         /** \param nGroup The group number (0 <= nGroup <= 7; else isActivated remains false) */
         Irreps(const int nGroup);
         
         //! Destructor
         virtual ~Irreps();
         
         //! Set the group
         /** \param nGroup Number from 0 to 7 (7 included)
             \return Validity of the group number (error returns false) */
         bool setGroup(const int nGroup);
         
         //! Whether the group number is already activated
         /** \return Whether the group number is already activated */
         bool getIsActivated() const;
         
         //! Get the group number
         /** \return The group number (-1 means not activated) */
         int getGroupNumber() const;
         
         //! Get the name of the group
         /** \return The group name ("error" means not activated) */
         string getGroupName() const;
         
         //! Get the name of the group corresponding to nGroup
         /** \param nGroup Group number
             \return The group name corresponding to nGroup */
         static string getGroupName(const int nGroup);
         
         //! Get the number of irreps for the currently activated group
         /** \return The number of irreps for the currently activated group (-1 means not activated) */
         int getNumberOfIrreps() const;
         
         //! Get the number of irreps for a certain group number
         /** \param nGroup The group number for which the number of irreps will be returned
             \return The number of irreps of that group (-1 means wrong group number) */
         static int getNumberOfIrreps(const int nGroup);
         
         //! Get the name of the irrep with number irrepNumber of the activated group. The irrep with number 0 is always the trivial irrep.
         /** \param irrepNumber The irrep number
             \return The irrep name (not activated returns "error1"; wrong number returns "error2") */
         string getIrrepName(const int irrepNumber) const;
         
         //! Get the direct product of the irreps with numbers Irrep1 and Irrep2: a bitwise XOR for psi4's conventions
         /** \param Irrep1 The number of the first irrep
             \param Irrep2 The number of the second irrep
             \return The direct product of I1 and I2 */
         static int directProd(const int Irrep1, const int Irrep2){ return Irrep1 ^ Irrep2; }
         
         //! Fill the array psi2molpro with the irrep conventions of molpro for the currently activated group
         /** \param psi2molpro The array to be filled: psi2molpro[psi_irrep] = molpro_irrep */
         void symm_psi2molpro( int * psi2molpro ) const;
         
         //! Fill the array psi2molpro with the irrep conventions of molpro for the group with symmetry label SymmLabel
         /** \param psi2molpro The array to be filled: psi2molpro[psi_irrep] = molpro_irrep
             \param SymmLabel The group for which psi2molpro needs to be filled */
         static void symm_psi2molpro( int * psi2molpro, const string SymmLabel );
         
         //! Print all info contained in this class
         static void printAll();
      
      private:
      
         //whether a relevant group number is currently set
         bool isActivated;
         
         //the currently set group number (check isActivated)
         int groupNumber;
         
         //number of irreps
         int nIrreps;
         
         //static member functions containing the group names, the number of irreps, and the names of the irreps
         static string getGroupNamePrivate(const int nGroup);
         static string getIrrepNamePrivate(const int nGroup, const int nIrrep);

   };
}

#endif