Loading...
Searching...
No Matches
amberNonBonded.h
Go to the documentation of this file.
// -*- 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;
class BALL_EXPORT AmberNonBonded
: public ForceFieldComponent
{
public:
#define AMBER_NB_ENABLED "enable NB"
// NA*e0*e0*1e7 / (4.0*PI*VACUUM_PERMITTIVITY)
static const double ELECTROSTATIC_FACTOR;
BALL_CREATE(AmberNonBonded)
AmberNonBonded()
;
AmberNonBonded(ForceField& force_field)
;
AmberNonBonded(const AmberNonBonded& amber_non_bonded)
;
virtual ~AmberNonBonded()
;
const AmberNonBonded& operator = (const AmberNonBonded& anb)
;
virtual void clear()
;
bool operator == (const AmberNonBonded& anb)
;
virtual bool setup();
bool setup(Options& options, ForceFieldParameters& par);
virtual double updateEnergy()
;
virtual void updateForces()
;
virtual void update();
void update(const std::vector<std::pair<Atom*, Atom*> >& atom_vector);
virtual double getElectrostaticEnergy() const
;
virtual double getVdwEnergy() const
;
virtual MolmecSupport::PairListAlgorithmType
determineMethodOfAtomPairGeneration()
;
virtual void buildVectorOfNonBondedAtomPairs
(const std::vector<std::pair<Atom*, Atom*> >& atom_vector,
const LennardJones& lennard_jones,
const Potential1210& hydrogen_bond);
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
BALL_EXPORT
#define BALL_EXPORT
Definition COMMON/global.h:50
BALL::AdvancedElectrostatic
Definition advElectrostatic.h:15
BALL::AmberNonBonded::enableStoreInteractions
void enableStoreInteractions(bool b=true)
BALL::AmberNonBonded::updateEnergy
virtual double updateEnergy()
BALL::AmberNonBonded::electrostatic_energy_
double electrostatic_energy_
Definition amberNonBonded.h:186
BALL::AmberNonBonded::buildVectorOfNonBondedAtomPairs
virtual void buildVectorOfNonBondedAtomPairs(const std::vector< std::pair< Atom *, Atom * > > &atom_vector, const LennardJones &lennard_jones, const Potential1210 &hydrogen_bond)
BALL::AmberNonBonded::updateForces
virtual void updateForces()
BALL::AmberNonBonded::setAdvancedElectrostatic
void setAdvancedElectrostatic(AdvancedElectrostatic *advES)
BALL::AmberNonBonded::ELECTROSTATIC_FACTOR
static const double ELECTROSTATIC_FACTOR
Definition amberNonBonded.h:47
BALL::AmberNonBonded::setup
virtual bool setup()
BALL::AmberNonBonded::AmberNonBonded
AmberNonBonded()
BALL::AmberNonBonded::determineMethodOfAtomPairGeneration
virtual MolmecSupport::PairListAlgorithmType determineMethodOfAtomPairGeneration()
BALL::AmberNonBonded::vdw_energy_
double vdw_energy_
Definition amberNonBonded.h:190
BALL::AmberNonBonded::update
virtual void update()
BALL::AmberNonBonded::clear
virtual void clear()
BALL::AmberNonBonded::getElectrostaticEnergy
virtual double getElectrostaticEnergy() const
BALL::AmberNonBonded::getVdwEnergy
virtual double getVdwEnergy() const
BALL::Atom
Definition atom.h:90
BALL::ForceFieldComponent::ForceField
friend class ForceField
Definition forceFieldComponent.h:37
BALL::ForceFieldComponent::ForceFieldComponent
ForceFieldComponent()
BALL::ForceFieldParameters
Definition forceFieldParameters.h:31
BALL::LennardJones
Definition lennardJones.h:44
BALL::Options
Definition options.h:48
BALL::Potential1210
Definition potential1210.h:27
common.h
BALL_CREATE
#define BALL_CREATE(name)
Definition create.h:62
forceFieldComponent.h
lennardJones.h
BALL::MolmecSupport
Definition support.h:46
BALL
Definition constants.h:13
BALL::Size
BALL_SIZE_TYPE Size
Definition COMMON/global.h:114
std
STL namespace.
potential1210.h
support.h