Loading...
Searching...
No Matches
charmmNonBonded.h
Go to the documentation of this file.
// -*- 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
{
class BALL_EXPORT CharmmNonBonded
: public ForceFieldComponent
{
public:
#define CHARMM_NB_ENABLED "enable NB"
BALL_CREATE(CharmmNonBonded)
CharmmNonBonded()
;
CharmmNonBonded(ForceField& force_field)
;
CharmmNonBonded(const CharmmNonBonded& charmm_non_bonded)
;
virtual ~CharmmNonBonded()
;
const CharmmNonBonded& operator =
(const CharmmNonBonded& charmm_non_bonded)
;
virtual void clear()
;
bool operator == (const CharmmNonBonded& charmm_non_bonded)
;
virtual bool setup();
virtual double updateEnergy()
;
virtual void updateForces()
;
virtual double getElectrostaticEnergy() const
;
virtual double getVdwEnergy() const
;
virtual double getSolvationEnergy() const
;
virtual MolmecSupport::PairListAlgorithmType
determineMethodOfAtomPairGeneration()
;
virtual void buildVectorOfNonBondedAtomPairs
(const std::vector<std::pair<Atom*, Atom*> >& atom_vector);
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
BALL_EXPORT
#define BALL_EXPORT
Definition COMMON/global.h:50
charmmEEF1.h
BALL::Atom
Definition atom.h:90
BALL::CharmmEEF1
Definition charmmEEF1.h:30
BALL::CharmmNonBonded::setup
virtual bool setup()
BALL::CharmmNonBonded::determineMethodOfAtomPairGeneration
virtual MolmecSupport::PairListAlgorithmType determineMethodOfAtomPairGeneration()
BALL::CharmmNonBonded::vdw_energy_
double vdw_energy_
Definition charmmNonBonded.h:176
BALL::CharmmNonBonded::clear
virtual void clear()
BALL::CharmmNonBonded::getSolvationEnergy
virtual double getSolvationEnergy() const
BALL::CharmmNonBonded::buildVectorOfNonBondedAtomPairs
virtual void buildVectorOfNonBondedAtomPairs(const std::vector< std::pair< Atom *, Atom * > > &atom_vector)
BALL::CharmmNonBonded::updateForces
virtual void updateForces()
BALL::CharmmNonBonded::solvation_energy_
double solvation_energy_
Definition charmmNonBonded.h:180
BALL::CharmmNonBonded::getElectrostaticEnergy
virtual double getElectrostaticEnergy() const
BALL::CharmmNonBonded::CharmmNonBonded
CharmmNonBonded()
BALL::CharmmNonBonded::updateEnergy
virtual double updateEnergy()
BALL::CharmmNonBonded::getVdwEnergy
virtual double getVdwEnergy() const
BALL::CharmmNonBonded::electrostatic_energy_
double electrostatic_energy_
Definition charmmNonBonded.h:172
BALL::ForceFieldComponent::ForceField
friend class ForceField
Definition forceFieldComponent.h:37
BALL::ForceFieldComponent::ForceFieldComponent
ForceFieldComponent()
BALL::LennardJones
Definition lennardJones.h:44
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