This file is indexed.

/usr/include/openbabel-2.0/openbabel/kinetics.h is in libopenbabel-dev 2.3.2+dfsg-2.2build1.

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/**********************************************************************
Copyright (C) 2005 by Chris Morley

This file is part of the Open Babel project.
For more information, see <http://openbabel.org/>

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 version 2 of the License.

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.
***********************************************************************/
#ifndef OB_KINETICS_H
#define OB_KINETICS_H

#include <openbabel/generic.h>

namespace OpenBabel
{

const unsigned RateData = 55555;
const unsigned ThermoData = 55556;

/// \class OBRateData kinetics.h <openbabel/kinetics.h>
/// \brief Holds rate constant data for OBReaction
/**The data is in a form used by CHEMKIN, at least the original
   free versions developed by Sandia Labs. Cantera is a GPL chemical
   kinetics program with similar capabilities.
   Used by chemkin format and cml reaction format
**/


class OBRateData : public OBGenericData
{
protected:
  double Rates[3];
  double LoRates[3];
  double TroeParams[4];
  std::map<std::string,double> Efficiencies;
public:
  virtual OBGenericData* Clone(OBBase* parent) const{return new OBRateData(*this);}
  enum rate_type {A, n, E};
  enum reaction_type {ARRHENIUS=55555, LINDERMANN, TROE, SRI, THREEBODY};
  reaction_type ReactionType;
  OBRateData():OBGenericData("Rate data", RateData)
  {
    Rates[0]=Rates[1]=Rates[2]=0;
    LoRates[0]=LoRates[1]=LoRates[2]=0;
    TroeParams[0]=TroeParams[1]=TroeParams[2]=TroeParams[3]=0;
    ReactionType = ARRHENIUS;
  }

  double GetRate(rate_type n) const
  {
    return Rates[n];
  }

  void SetRate(rate_type n, const double val)
  {
    if(n<3)
      Rates[n] = val;
  }

  double GetLoRate(rate_type n) const
  {
    return LoRates[n];
  }

  void SetLoRate(rate_type n, const double val)
  {
    if(n<3)
      LoRates[n] = val;
  }

  double GetTroeParam(int n) const
  {
    return TroeParams[n];
  }

  void SetTroeParams(int n, const double val)
  {
    if(n<4)
      TroeParams[n] = val;
  }

  void SetEfficiency(std::string id, double Eff)
  {
    Efficiencies[id] = Eff;
  }

  double GetEfficiency(std::string id)
  {
    return Efficiencies[id]; //will be 0 if not found
  }

  bool GetNextEff(std::string& id, double& Eff)
  {
    //Supply id empty to begin, then id is the*last* id
    std::map<std::string, double>::iterator itr;
    if(id.empty())
      itr = Efficiencies.begin();
    else
    {
      itr = Efficiencies.find(id);
      if(itr!=Efficiencies.end())
        ++itr;
    }
    if(itr==Efficiencies.end())
      return false;
    id    = itr->first;
    Eff = itr->second;
    return true;
  }
};

//******************************************************************************
/// \class OBNasaThermoData kinetics.h <openbabel/kinetics.h>
/// \brief Thermodynamic data in old style NASA polynomial form for OBMol
/**This is a venerable data format used to describe specific heats, enthalpies
   and entropies, particularly in the gas phase and at high temperatures.
   There is a standard datafile with fixed format (for punched cards!) which
   can be read and written to this OBMol extension using the thermo format. It
   is also used in chemkin format and in cmlreact format
   For a brief description of the meaning of the coefficients see
   http://www.me.berkeley.edu/gri_mech/data/nasa_plnm.html
   The first 7 coefficients are for the high temperature range MidT to HiT;
   and the second 7 are for the low temperature range LoT to MidT
   Note that there is a more modern NASA polynomial with more terms, which
   is not supported here.
**/
class OBNasaThermoData : public OBGenericData
{
protected:
  double Coeffs[14];
  double LoT, MidT, HiT;
  char phase;
public:
  OBNasaThermoData(): LoT(300),MidT(1000),HiT(3000),phase('G')
  {	_type = ThermoData;	_attr = "Nasa thermo data";}

  virtual OBGenericData* Clone(OBBase* parent) const{return new OBNasaThermoData(*this);}

  double GetCoeff(unsigned n) const
  {
    return Coeffs[n];
  }

  void SetCoeff(unsigned n, const double val)
  {
    if(n<14)
      Coeffs[n] = val;
  }
  double GetLoT() const {return LoT;}
  double GetMidT() const {return MidT;}
  double GetHiT() const {return HiT;}
  void SetLoT(double val){LoT=val;}
  void SetMidT(double val){MidT=val;}
  void SetHiT(double val){HiT=val;}

  char GetPhase() const {return phase;}
  void SetPhase(char ph){phase=ph;}
};

} //namespace OpenBabel

#endif //OB_KINETICS_H

//! \file kinetics.h
//! \brief OBRateData and OBNasaThermoData classes