00001 #ifndef COLVARPROXY_H
00002 #define COLVARPROXY_H
00003
00004
00005
00006 #include "colvarmodule.h"
00007
00008
00011
00012 class colvarproxy {
00013
00014 public:
00015
00017 colvarmodule *colvars;
00018
00021 virtual cvm::real unit_angstrom() = 0;
00022
00024 virtual cvm::real boltzmann() = 0;
00025
00027 virtual cvm::real temperature() = 0;
00028
00030 virtual cvm::real dt() = 0;
00031
00033 virtual void add_energy (cvm::real energy) = 0;
00034
00036 virtual void request_system_force (bool yesno) = 0;
00037
00039 virtual void log (std::string const &message) = 0;
00040
00042 virtual void fatal_error (std::string const &message) = 0;
00043
00045 virtual void exit (std::string const &message) = 0;
00046
00047
00050 virtual std::string input_prefix() = 0;
00051
00053 virtual std::string restart_output_prefix() = 0;
00054
00057 virtual std::string output_prefix() = 0;
00058
00060 virtual size_t restart_frequency() = 0;
00061
00062
00063
00066 virtual cvm::rvector position_distance (cvm::atom_pos const &pos1,
00067 cvm::atom_pos const &pos2) = 0;
00068
00075 virtual cvm::real position_dist2 (cvm::atom_pos const &pos1,
00076 cvm::atom_pos const &pos2) = 0;
00077
00081 virtual void select_closest_image (cvm::atom_pos &pos,
00082 cvm::atom_pos const &ref_pos) = 0;
00083
00088 void select_closest_images (std::vector<cvm::atom_pos> &pos,
00089 cvm::atom_pos const &ref_pos);
00090
00091
00097 virtual void load_atoms (char const *filename,
00098 std::vector<cvm::atom> &atoms,
00099 std::string const pdb_field,
00100 double const pdb_field_value = 0.0);
00101
00105 virtual void load_coords (char const *filename,
00106 std::vector<cvm::atom_pos> &pos,
00107 const std::vector<int> &indices,
00108 std::string const pdb_field,
00109 double const pdb_field_value = 0.0);
00110
00113 virtual void backup_file (char const *filename);
00114
00116 virtual cvm::real rand_gaussian (void);
00117
00118 virtual inline ~colvarproxy() {}
00119 };
00120
00121
00122 inline void colvarproxy::select_closest_images (std::vector<cvm::atom_pos> &pos,
00123 cvm::atom_pos const &ref_pos)
00124 {
00125 for (std::vector<cvm::atom_pos>::iterator pi = pos.begin();
00126 pi != pos.end(); pi++) {
00127 select_closest_image (*pi, ref_pos);
00128 }
00129 }
00130
00131
00132 inline void colvarproxy::load_coords (char const *filename,
00133 std::vector<cvm::atom_pos> &pos,
00134 const std::vector<int> &indices,
00135 std::string const pdb_field,
00136 double const pdb_field_value)
00137 {
00138 cvm::fatal_error ("Error: colvarproxy::load_coords() has not been (re)redefined, "
00139 "__FILE__ at line __LINE__.\n");
00140 }
00141
00142
00143 inline void colvarproxy::load_atoms (char const *filename,
00144 std::vector<cvm::atom> &atoms,
00145 std::string const pdb_field,
00146 double const pdb_field_value)
00147 {
00148 cvm::fatal_error ("Error: colvarproxy::load_atoms() has not been (re)redefined, "
00149 "__FILE__ at line __LINE__.\n");
00150 }
00151
00152
00153 inline void colvarproxy::backup_file (char const *filename)
00154 {
00155
00156
00157 }
00158
00159 inline cvm::real colvarproxy::rand_gaussian (void)
00160 {
00161 cvm::fatal_error ("Error: colvarproxy::rand_gaussian() has not been (re)redefined, "
00162 "__FILE__ at line __LINE__.\n");
00163 return 999999.;
00164 }
00165
00166
00167 #endif
00168
00169
00170
00171
00172
00173