00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: quadraticAngleBend.h,v 1.19 2005/12/23 17:01:54 amoll Exp $ 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 } // namespace BALL 00101 00102 #endif // BALL_MOLMEC_PARAMETER_QUADRATICBONDSTRETCH_H