NAMD
Public Member Functions | List of all members
ABoundDiheRestraint Class Reference

#include <FreeEnergyRestrain.h>

Inheritance diagram for ABoundDiheRestraint:
ADiheRestraint ARestraint

Public Member Functions

void SetLowerAngle (double Angle)
 
void SetUpperAngle (double Angle)
 
void SetIntervalAngle (double Angle)
 
double GetLowerAngle ()
 
double GetUpperAngle ()
 
double GetIntervalAngle ()
 
double GetEnergy ()
 
AVector GetGradient (int WhichGroup)
 
void GetStr (char *Str)
 
Bool_t TwoTargets ()
 
double GetDiheTarget1 ()
 
double GetDiheTarget2 ()
 
- Public Member Functions inherited from ADiheRestraint
 ADiheRestraint ()
 
void PrintInfo ()
 
- Public Member Functions inherited from ARestraint
 ARestraint ()
 
virtual ~ARestraint ()
 
int GetNumGroups ()
 
void SetKf (double Kf)
 
double GetKf ()
 
void SetLambdaKf (double LambdaKf)
 
void SetLambdaRef (double LambdaRef)
 
double GetLambdaKf ()
 
double GetLambdaRef ()
 
void SetGroup (AGroup &Group, int GroupIndex)
 
void SetGroups (AGroup &Group1)
 
void SetGroups (AGroup &Group1, AGroup &Group2)
 
void SetGroups (AGroup &Group1, AGroup &Group2, AGroup &Group3)
 
void SetGroups (AGroup &Group1, AGroup &Group2, AGroup &Group3, AGroup &Group4)
 
void UpdateCOMs (GlobalMasterFreeEnergy &CFE)
 
void DistributeForce (int WhichGroup, AVector Force, GlobalMasterFreeEnergy &CFE)
 
virtual Bool_t IsForcing ()
 
virtual double Get_dU_dLambda ()
 
virtual void SetRefPos (AVector)
 
virtual void SetRefDist (double)
 
virtual void SetRefAngle (double)
 
virtual void SetBound (Bound_t)
 
virtual void SetStartPos (AVector)
 
virtual void SetStopPos (AVector)
 
virtual void SetStartDist (double)
 
virtual void SetStopDist (double)
 
virtual void SetStartAngle (double)
 
virtual void SetStopAngle (double)
 

Additional Inherited Members

- Protected Member Functions inherited from ADiheRestraint
double GetE (double RefDihe, double Const)
 
AVector GetGrad (int WhichGroup, double RefDihe, double Const)
 
AVector gradU (AVector &P1P2P3, AVector &P4P5P6, AVector &dP1, AVector &dP2, AVector &dP3, AVector &dP4, AVector &dP5, AVector &dP6)
 
- Protected Member Functions inherited from ARestraint
double GetAngle (AVector &A, AVector &B, AVector &C)
 
double GetDihe (AVector &A, AVector &B, AVector &C, AVector &D)
 
void EarlyExit (const char *Str, int AtomID)
 
- Protected Attributes inherited from ARestraint
double m_Kf
 
int m_NumGroups
 
AGroupm_pGroups
 
AVectorm_pCOMs
 
- Static Protected Attributes inherited from ARestraint
static double m_LambdaKf = 1.0
 
static double m_LambdaRef = 0.0
 

Detailed Description

Definition at line 392 of file FreeEnergyRestrain.h.

Member Function Documentation

double ABoundDiheRestraint::GetDiheTarget1 ( )
inlinevirtual

Implements ADiheRestraint.

Definition at line 413 of file FreeEnergyRestrain.h.

413 {return(m_LowerAngle);}
double ABoundDiheRestraint::GetDiheTarget2 ( )
inlinevirtual

Implements ADiheRestraint.

Definition at line 414 of file FreeEnergyRestrain.h.

414 {return(m_UpperAngle);}
double ABoundDiheRestraint::GetEnergy ( )
virtual

Implements ARestraint.

Definition at line 1015 of file FreeEnergyRestrain.C.

References ARestraint::GetDihe(), ADiheRestraint::GetE(), ARestraint::m_Kf, and ARestraint::m_pCOMs.

1015  {
1016 //---------------------------------------------------------------------------
1017 // return the Energy for this bound dihedral angle restraint.
1018 //---------------------------------------------------------------------------
1019  double E, Dihe, Const;
1020 
1021  Const = m_Kf / (1.0 - cos(m_IntervalAngle));
1022  Dihe = GetDihe(m_pCOMs[0], m_pCOMs[1], m_pCOMs[2], m_pCOMs[3]);
1023  // dihedral angle is between LowerAngle and UpperAngle
1024  if ( (Dihe>m_LowerAngle) && (Dihe<m_UpperAngle) ) {
1025  E = 0.0;
1026  }
1027  // dihedral angle is between LowerAngle and LowerAngle-IntervalAngle
1028  else if ( (Dihe<m_LowerAngle) && (Dihe>(m_LowerAngle-m_IntervalAngle)) ) {
1029  E = GetE(m_LowerAngle, Const);
1030  }
1031  // dihedral angle is between UpperAngle and UpperAngle+IntervalAngle
1032  else if ( (Dihe>m_UpperAngle) && (Dihe<(m_UpperAngle+m_IntervalAngle)) ) {
1033  E = GetE(m_UpperAngle, Const);
1034  }
1035  // dihedral angle is more than UpperAngle or less than LowerAngle
1036  else {
1037  E = Const;
1038  }
1039  return(E);
1040 }
double GetDihe(AVector &A, AVector &B, AVector &C, AVector &D)
double GetE(double RefDihe, double Const)
AVector * m_pCOMs
AVector ABoundDiheRestraint::GetGradient ( int  WhichGroup)
virtual

Implements ARestraint.

Definition at line 1043 of file FreeEnergyRestrain.C.

References ARestraint::GetDihe(), ADiheRestraint::GetGrad(), ARestraint::m_Kf, and ARestraint::m_pCOMs.

1043  {
1044 //---------------------------------------------------------------------------
1045 // return the gradient for this bound dihedral angle restraint.
1046 //---------------------------------------------------------------------------
1047  AVector Vec;
1048  double Dihe, Const;
1049 
1050  Const = m_Kf / (1.0 - cos(m_IntervalAngle));
1051  Dihe = GetDihe(m_pCOMs[0], m_pCOMs[1], m_pCOMs[2], m_pCOMs[3]);
1052  // dihedral angle is between LowerAngle and LowerAngle-IntervalAngle
1053  if ( (Dihe<m_LowerAngle) && (Dihe>(m_LowerAngle-m_IntervalAngle)) ) {
1054  Vec = GetGrad(WhichGroup, m_LowerAngle, Const);
1055  }
1056  // dihedral angle is between UpperAngle and UpperAngle+IntervalAngle
1057  else if ( (Dihe>m_UpperAngle) && (Dihe<(m_UpperAngle+m_IntervalAngle)) ) {
1058  Vec = GetGrad(WhichGroup, m_UpperAngle, Const);
1059  }
1060  return(Vec);
1061 }
AVector GetGrad(int WhichGroup, double RefDihe, double Const)
double GetDihe(AVector &A, AVector &B, AVector &C, AVector &D)
AVector * m_pCOMs
double ABoundDiheRestraint::GetIntervalAngle ( )
inline

Definition at line 406 of file FreeEnergyRestrain.h.

406 {return(m_IntervalAngle);}
double ABoundDiheRestraint::GetLowerAngle ( )
inline

Definition at line 404 of file FreeEnergyRestrain.h.

404 {return(m_LowerAngle);}
void ABoundDiheRestraint::GetStr ( char *  Str)
inlinevirtual

Implements ARestraint.

Definition at line 409 of file FreeEnergyRestrain.h.

409  {
410  strcpy(Str, "Bound Dihedral Restraint");
411  }
double ABoundDiheRestraint::GetUpperAngle ( )
inline

Definition at line 405 of file FreeEnergyRestrain.h.

405 {return(m_UpperAngle);}
void ABoundDiheRestraint::SetIntervalAngle ( double  Angle)
inlinevirtual

Reimplemented from ARestraint.

Definition at line 403 of file FreeEnergyRestrain.h.

403 {m_IntervalAngle=Angle;}
struct angle Angle
void ABoundDiheRestraint::SetLowerAngle ( double  Angle)
inlinevirtual

Reimplemented from ARestraint.

Definition at line 401 of file FreeEnergyRestrain.h.

401 {m_LowerAngle=Angle;}
struct angle Angle
void ABoundDiheRestraint::SetUpperAngle ( double  Angle)
inlinevirtual

Reimplemented from ARestraint.

Definition at line 402 of file FreeEnergyRestrain.h.

402 {m_UpperAngle=Angle;}
struct angle Angle
Bool_t ABoundDiheRestraint::TwoTargets ( )
inlinevirtual

Implements ADiheRestraint.

Definition at line 412 of file FreeEnergyRestrain.h.

References kTrue.

412 {return(kTrue);}

The documentation for this class was generated from the following files: