/usr/include/BALL/MOLMEC/CHARMM/charmmNonBonded.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 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 276 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// Molecular Mechanics: Charmm force field, non-bonded component
// (van der Waals, electrostatics, EEF1 solvation)
//
#ifndef BALL_MOLMEC_CHARMM_NONBONDED_H
#define BALL_MOLMEC_CHARMM_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_PARAMETER_CHARMMEEF1_H
# include <BALL/MOLMEC/PARAMETER/charmmEEF1.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
{
/** Charmm NonBonded component.
This force field component implements the non-bonded interactions
in the CHARMM force field: van-der-Waals interaction, electrostatics,
and solvation (in EEF1 only).
\ingroup CHARMM
*/
class BALL_EXPORT CharmmNonBonded
: public ForceFieldComponent
{
public:
/// flag to enable NonBonded
#define CHARMM_NB_ENABLED "enable NB"
/** @name Constructors and Destructors
*/
//@{
BALL_CREATE(CharmmNonBonded)
/** Default constructor.
*/
CharmmNonBonded()
;
/** Constructor.
*/
CharmmNonBonded(ForceField& force_field)
;
/** Copy constructor
*/
CharmmNonBonded(const CharmmNonBonded& charmm_non_bonded)
;
/** Destructor.
*/
virtual ~CharmmNonBonded()
;
//@}
/** @name Assignment
*/
//@{
/** Assignment operator
*/
const CharmmNonBonded& operator =
(const CharmmNonBonded& charmm_non_bonded)
;
/** Clear method
*/
virtual void clear()
;
//@}
/** @name Predicates
*/
//@{
/** Equality operator
*/
bool operator == (const CharmmNonBonded& charmm_non_bonded)
;
//@}
/** @name Setup Methods
*/
//@{
/** Setup method.
*/
virtual bool setup()
throw(Exception::TooManyErrors);
//@}
/** @name Accessors
*/
//@{
/** Calculates and returns the component's energy.
*/
virtual double updateEnergy()
;
/** Calculates and returns the component's forces.
*/
virtual void updateForces()
;
/** Return the electrostatic energy.
*/
virtual double getElectrostaticEnergy() const
;
/** Return the Van-der-Waals energy.
*/
virtual double getVdwEnergy() const
;
/** Return the solvation energy.
*/
virtual double getSolvationEnergy() 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)
throw(Exception::TooManyErrors);
//@}
protected:
/*_ @name Protected Attributes
*/
//_@{
/*_ Value of the electrostatic energy
*/
double electrostatic_energy_;
/*_ Value of the vdw energy
*/
double vdw_energy_;
/*_ Value of the solvation energy
*/
double solvation_energy_;
//_@}
/*_ @name Private Attributes
*/
//_@{
private:
/*_ Vector array with all atom pairs whose distance is smaller than cut_off
*/
vector<LennardJones::Data> non_bonded_;
/*_ A helper array for buildVectorOfNonBondedAtomPairs(). This is
declared here to save the ctor within the method.
*/
vector<bool> is_torsion_;
/*_ Number of 1-4 interactions in the vector non_bonded
*/
Size number_of_1_4_;
/*_ Cutoff distance for non-bonded interactions
*/
float cut_off_;
/*_ Cutoff distance for vdw interactions
*/
float cut_off_vdw_;
/*_ Start of the switch function for the vdw interactions
*/
float cut_on_vdw_;
/*_ Cutoff distance for electrostatic interactions
*/
float cut_off_electrostatic_;
/*_ Start of the switch function for the vdw interactions
*/
float cut_on_electrostatic_;
/*_ Cutoff distance for solvation contribution (EEF1)
*/
float cut_off_solvation_;
/*_ Start of the switch function for the solvation contribution (EEF1)
*/
float cut_on_solvation_;
/*_ Inverse cube of the difference of cutoff and cuton for vdW
*/
float inverse_difference_off_on_vdw_3_;
/*_ Inverse cube of the difference of cutoff and cuton for solvation
*/
float inverse_difference_off_on_solvation_3_;
/*_ Inverse cube of the difference of cutoff and cuton for electrostatic
*/
float inverse_difference_off_on_electrostatic_3_;
/*_ Scaling factor for vdw_1_4_interactions
*/
float scaling_vdw_1_4_;
/*_ Scaling factor for electrostatic_1_4_interactions
*/
float 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_parameters_;
LennardJones van_der_waals_parameters_14_;
CharmmEEF1 solvation_parameters_;
vector<CharmmEEF1::Values> solvation_;
bool use_solvation_component_;
//_@}
};
} // namespace BALL
#endif // BALL_MOLMEC_CHARMM_CHARMMVDW_H
|