00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H
00008 #define BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H
00009
00010 #ifndef BALL_FORMAT_PARAMETERSECTION_H
00011 # include <BALL/FORMAT/parameterSection.h>
00012 #endif
00013
00014 #ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
00015 # include <BALL/MOLMEC/PARAMETER/atomTypes.h>
00016 #endif
00017
00018 #ifndef BALL_KERNEL_ATOM_H
00019 # include <BALL/KERNEL/atom.h>
00020 #endif
00021
00022 namespace BALL
00023 {
00030 class BALL_EXPORT QuadraticAngleBend
00031 : public ParameterSection
00032 {
00033 public:
00034
00035 enum
00036 {
00037 UNKNOWN
00038 };
00039
00040 struct BALL_EXPORT Values
00041 {
00042 float theta0;
00043 float k;
00044 };
00045
00046 struct BALL_EXPORT Data
00047 {
00048 Atom::StaticAtomAttributes* atom1;
00049 Atom::StaticAtomAttributes* atom2;
00050 Atom::StaticAtomAttributes* atom3;
00051 Values values;
00052 };
00053
00054
00057 QuadraticAngleBend();
00058
00061 virtual ~QuadraticAngleBend() ;
00062
00065 virtual void clear() ;
00066
00072 virtual bool extractSection(ForceFieldParameters& parameters, const String& section_name);
00073 virtual bool extractSection(Parameters& parameters, const String& section_name);
00074
00077 bool hasParameters(Atom::Type I, Atom::Type J, Atom::Type K) const;
00078
00081 QuadraticAngleBend::Values getParameters
00082 (Atom::Type I, Atom::Type J, Atom::Type K) const;
00083
00088 bool assignParameters
00089 (QuadraticAngleBend::Values& parameters,
00090 Atom::Type I, Atom::Type J, Atom::Type K) const;
00091
00092 protected:
00093
00094 Size number_of_atom_types_;
00095
00096 vector<Values> values_;
00097
00098 vector<Index> value_index_;
00099 };
00100 }
00101
00102 #endif // BALL_MOLMEC_PARAMETER_QUADRATICBONDSTRETCH_H