/usr/include/BALL/MOLMEC/PARAMETER/lennardJones.h is in libball1.4-dev 1.4.3~beta1-4.
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 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// Molecular Mechanics Parameter: class describing the atom type section of a parameter file
#ifndef BALL_MOLMEC_PARAMETER_LENNARDJONES_H
#define BALL_MOLMEC_PARAMETER_LENNARDJONES_H
#ifndef BALL_FORMAT_PARAMETERSECTION_H
# include <BALL/FORMAT/parameterSection.h>
#endif
#ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
# include <BALL/MOLMEC/PARAMETER/atomTypes.h>
#endif
namespace BALL
{
/** Lennard Jones parameter section.
This section reads parameters for a Lennard Jones potental (usually a
6-12 Potential). Parameters may be given in three different formats
(no mixing of formats is allowed).
- <b> A </b> and <b> B </b> are given directly ( \link A_B_FORMAT A_B_FORMAT \endlink )
- well depth and minimum radii ( \link EPSILON_R_FORMAT EPSILON_R_FORMAT \endlink )
- Slater-Kirkwood parameters ( \link SLATER_KIRKWOOD_FORMAT SLATER_KIRKWOOD_FORMAT \endlink )
If the Slater-Kirkwood format is used, the values for \f$A_{ij}\f$ and \f$B_{ij}\f$ are calculated
as follows (see e.g. Brooks et al., J. Comput. Chem, 4(2):187-217 (1983))
\f[
B_{ij} = \frac{3}{2} \left(\frac{1}{4 \pi \varepsilon_0}\right)^\frac{1}{2}
\frac{e \hbar \sqrt{m_e} \alpha_i \alpha_j}{\sqrt{\frac{\alpha_i}{N_i} + \sqrt{\frac{\alpha_j}{N_j}}}}
\f]
\par
\f[
A_{ij} = \frac{1}2{} B_{ij} (R_i + R_j)^6
\f]
\par
\ingroup MolmecParameters
*/
class BALL_EXPORT LennardJones
: public ParameterSection
{
public:
/** @name Enums
*/
//@{
enum FormatType
{
A_B_FORMAT,
EPSILON_R_FORMAT,
SLATER_KIRKWOOD_FORMAT
};
//@}
/** @name Type definitions
*/
//@{
/**
*/
struct BALL_EXPORT Values
{
float A;
float B;
};
struct BALL_EXPORT Data
{
Atom* atom1;
Atom* atom2;
Values values;
};
//@}
/** @name Constructors and Destructors
*/
//@{
/** Default constructor.
*/
LennardJones() ;
/** Copy constructor.
*/
LennardJones(const LennardJones& lj) ;
/** Destructor.
*/
virtual ~LennardJones() ;
/** Clear method.
*/
virtual void clear() ;
//@}
/** Reads a parameter section from an INI file.
This method reads the section given in section\_name from
ini\_file, interprets (if given) a format line, reads the data from
this section according to the format, and builds some
datastructures for fast and easy access to this data.
*/
virtual bool extractSection(ForceFieldParameters& parameters,
const String& section_name) ;
///
virtual bool extractSection(Parameters& parameters,
const String& section_name) ;
/** Queries whether a parameter set is defined for the given atom types.
*/
bool hasParameters(Atom::Type I, Atom::Type J) const ;
/** Returns the parameters for a given atom type combination.
*/
Values getParameters(Atom::Type I, Atom::Type J) const ;
/** Assign the parameters for a given atom type combination.
If no parameters are defined for this combination, false is
returned and nothing is changed.
*/
bool assignParameters(Values& parameters, Atom::Type I, Atom::Type J)
const ;
/** @name Assignment
*/
//@{
/** Assignment operator
*/
const LennardJones& operator = (const LennardJones& lj) ;
//@}
/** @name Predicates
*/
//@{
/** Equality operator
*/
bool operator == (const LennardJones& lj) const ;
//@}
protected:
Size number_of_atom_types_;
std::vector<float> A_;
std::vector<float> B_;
std::vector<float> N_;
std::vector<float> Aij_;
std::vector<float> Bij_;
std::vector<bool> is_defined_;
FormatType format_;
std::vector<String> names_;
};
} // namespace BALL
#endif // BALL_MOLMEC_PARAMETER_LENNARDJONES_H
|