/usr/include/BALL/MOLMEC/AMBER/amberNonBonded.h is in libball1.4-dev 1.4.3~beta1-3.
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 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// Molecular Mechanics: Amber force field, non-bonded component
#ifndef BALL_MOLMEC_AMBER_NONBONDED_H
#define BALL_MOLMEC_AMBER_NONBONDED_H
#ifndef BALL_COMMON_H
# include <BALL/common.h>
#endif
#ifndef BALL_MOLMEC_PARAMETER_LENNARDJONES_H
# include <BALL/MOLMEC/PARAMETER/lennardJones.h>
#endif
#ifndef BALL_MOLMEC_PARAMETER_POTENTIAL1210_H
# include <BALL/MOLMEC/PARAMETER/potential1210.h>
#endif
#ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
# include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
#endif
#ifndef BALL_MOLMEC_COMMON_SUPPORT_H
# include <BALL/MOLMEC/COMMON/support.h>
#endif
namespace BALL
{
class AdvancedElectrostatic;
/** Amber NonBonded (VdW + Electrostatic) component
\ingroup AMBER
*/
class BALL_EXPORT AmberNonBonded
: public ForceFieldComponent
{
public:
/// flag to enable NB
#define AMBER_NB_ENABLED "enable NB"
// NA*e0*e0*1e7 / (4.0*PI*VACUUM_PERMITTIVITY)
static const double ELECTROSTATIC_FACTOR;
/** @name Constructors and Destructors
*/
//@{
BALL_CREATE(AmberNonBonded)
/** Default constructor.
*/
AmberNonBonded()
;
/** Constructor.
*/
AmberNonBonded(ForceField& force_field)
;
/** Copy constructor
*/
AmberNonBonded(const AmberNonBonded& amber_non_bonded)
;
/** Destructor.
*/
virtual ~AmberNonBonded()
;
//@}
/** Assignment
*/
//@{
/** Assignment operator
*/
const AmberNonBonded& operator = (const AmberNonBonded& anb)
;
/** Clear method
*/
virtual void clear()
;
//@}
/** Predicates
*/
//@{
/** Equality operator
*/
bool operator == (const AmberNonBonded& anb)
;
//@}
/** @name Setup Methods
*/
//@{
/** Setup method.
*/
virtual bool setup()
throw(Exception::TooManyErrors);
/** Setup this component according to the given options and store the ForceFieldParameters in par */
bool setup(Options& options, ForceFieldParameters& par);
//@}
/** @name Accessors
*/
//@{
/** Calculates and returns the component's energy.
*/
virtual double updateEnergy()
;
/** Calculates and returns the component's forces.
*/
virtual void updateForces()
;
/** Update the pair list.
This method is called by the force field whenever
\link ForceField::update ForceField::update \endlink is called. It is used
to recalculate the nonbonded pair list.
*/
virtual void update()
throw(Exception::TooManyErrors);
/** Update this component using the given atom-pairs only */
void update(const std::vector<std::pair<Atom*, Atom*> >& atom_vector);
/** Return the electrostatic energy.
*/
virtual double getElectrostaticEnergy() const
;
/** Return the Van-der-Waals energy.
*/
virtual double getVdwEnergy() const
;
//@}
/** @name Neighbourhood and Parameter calculations
*/
//@{
/** Computes the most efficient way to calculate the non-bonded atom pairs
*/
virtual MolmecSupport::PairListAlgorithmType
determineMethodOfAtomPairGeneration()
;
/** Build a vector of non-bonded atom pairs with the vdw parameters
*/
virtual void buildVectorOfNonBondedAtomPairs
(const std::vector<std::pair<Atom*, Atom*> >& atom_vector,
const LennardJones& lennard_jones,
const Potential1210& hydrogen_bond)
throw(Exception::TooManyErrors);
//@}
void enableStoreInteractions(bool b=true);
void setAdvancedElectrostatic(AdvancedElectrostatic* advES);
protected:
/*_ @name Protected Attributes
*/
//_@{
/*_ Value of the electrostatic energy
*/
double electrostatic_energy_;
/*_ Value of the vdw energy
*/
double vdw_energy_;
//_@}
private:
/*_ @name Private Attributes
*/
//_@{
/*_ Vector array with all atom pairs whose distance is smaller than cut_off
*/
std::vector<LennardJones::Data> non_bonded_;
/*_ Vector of flags deciding whether the pair forms a hydrogen bond or a
standard VdW interaction.
*/
std::vector<char> is_hydrogen_bond_;
/*_ Number of 1-4 interactions in the vector non_bonded
*/
Size number_of_1_4_;
/*_ Number of hydrogen bond interactions in the vector non_bonded
*/
Size number_of_h_bonds_;
/*_ Cutoff distance for non-bonded interactions
*/
double cut_off_;
/*_ Cutoff distance for vdw interactions
*/
double cut_off_vdw_;
/*_ Cuton distance for vdw interactions
*/
double cut_on_vdw_;
/*_ Cutoff distance for electrostatic interactions
*/
double cut_off_electrostatic_;
/*_ Cuton distance for electrostatic interactions
*/
double cut_on_electrostatic_;
/*_ Inverse cube of the difference of squares of cuton and cutoff for vdW.
This value is required for the switching function
*/
double inverse_distance_off_on_vdw_3_;
/*_ Inverse cube of the difference of squares of cuton and cutoff for eletrostatic.
This value is required for the switching function
*/
double inverse_distance_off_on_electrostatic_3_;
/*_ Scaling factor for vdw_1_4_interactions
*/
double scaling_vdw_1_4_;
/*_ Scaling factor for electrostatic_1_4_interactions
*/
double scaling_electrostatic_1_4_;
/*_ Flag for using constant or distance dependent dielectric constant.
True = distance dependent
*/
bool use_dist_depend_dielectric_;
/*_ The most efficient algorithm to calculate the non-bonded atom pairs.
{\tt BRUTE\_FORCE}: brute force: all against all\\
{\tt HASH\_GRID}: box grid
*/
MolmecSupport::PairListAlgorithmType algorithm_type_;
LennardJones van_der_waals_;
Potential1210 hydrogen_bond_;
//_@}
};
} // namespace BALL
#endif // BALL_MOLMEC_AMBER_AMBERVDW_H
|