00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H 00006 #define BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H 00007 00008 #ifndef BALL_FORMAT_PARAMETERSECTION_H 00009 # include <BALL/FORMAT/parameterSection.h> 00010 #endif 00011 00012 #ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H 00013 # include <BALL/MOLMEC/PARAMETER/atomTypes.h> 00014 #endif 00015 00016 #ifndef BALL_KERNEL_ATOM_H 00017 # include <BALL/KERNEL/atom.h> 00018 #endif 00019 00020 namespace BALL 00021 { 00028 class BALL_EXPORT QuadraticAngleBend 00029 : public ParameterSection 00030 { 00031 public: 00032 00033 enum 00034 { 00035 UNKNOWN 00036 }; 00037 00038 struct BALL_EXPORT Values 00039 { 00040 float theta0; 00041 float k; 00042 }; 00043 00044 struct BALL_EXPORT Data 00045 { 00046 Atom* atom1; 00047 Atom* atom2; 00048 Atom* atom3; 00049 Values values; 00050 }; 00051 00052 00055 QuadraticAngleBend(); 00056 00059 virtual ~QuadraticAngleBend() ; 00060 00063 virtual void clear() ; 00064 00070 virtual bool extractSection(ForceFieldParameters& parameters, const String& section_name); 00071 virtual bool extractSection(Parameters& parameters, const String& section_name); 00072 00075 bool hasParameters(Atom::Type I, Atom::Type J, Atom::Type K) const; 00076 00079 QuadraticAngleBend::Values getParameters 00080 (Atom::Type I, Atom::Type J, Atom::Type K) const; 00081 00086 bool assignParameters 00087 (QuadraticAngleBend::Values& parameters, 00088 Atom::Type I, Atom::Type J, Atom::Type K) const; 00089 00090 protected: 00091 00092 Size number_of_atom_types_; 00093 00094 vector<Values> values_; 00095 00096 vector<Index> value_index_; 00097 }; 00098 } // namespace BALL 00099 00100 #endif // BALL_MOLMEC_PARAMETER_QUADRATICBONDSTRETCH_H