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 void log (std::string const &message) = 0;
00031
00033 virtual void fatal_error (std::string const &message) = 0;
00034
00036 virtual void exit (std::string const &message) = 0;
00037
00038
00041 virtual std::string input_prefix() = 0;
00042
00044 virtual std::string restart_output_prefix() = 0;
00045
00048 virtual std::string output_prefix() = 0;
00049
00051 virtual size_t restart_frequency() = 0;
00052
00053
00054
00055
00056
00059 virtual cvm::rvector position_distance (cvm::atom_pos const &pos1,
00060 cvm::atom_pos const &pos2) = 0;
00061
00068 virtual cvm::real position_dist2 (cvm::atom_pos const &pos1,
00069 cvm::atom_pos const &pos2) = 0;
00070
00074 virtual void select_closest_image (cvm::atom_pos &pos,
00075 cvm::atom_pos const &ref_pos) = 0;
00076
00081 void select_closest_images (std::vector<cvm::atom_pos> &pos,
00082 cvm::atom_pos const &ref_pos);
00083
00084
00090 virtual void load_atoms (char const *filename,
00091 std::vector<cvm::atom> &atoms,
00092 std::string const pdb_field = "O",
00093 double const pdb_field_value = 0.0);
00094
00098 virtual void load_coords (char const *filename,
00099 std::vector<cvm::atom_pos> &pos,
00100 std::string const pdb_field = "O",
00101 double const pdb_field_value = 0.0);
00102
00105 virtual void backup_file (char const *filename);
00106
00107 virtual inline ~colvarproxy() {}
00108 };
00109
00110
00111 inline void colvarproxy::select_closest_images (std::vector<cvm::atom_pos> &pos,
00112 cvm::atom_pos const &ref_pos)
00113 {
00114 for (std::vector<cvm::atom_pos>::iterator pi = pos.begin();
00115 pi != pos.end(); pi++) {
00116 select_closest_image (*pi, ref_pos);
00117 }
00118 }
00119
00120
00121 inline void colvarproxy::load_coords (char const *filename,
00122 std::vector<cvm::atom_pos> &pos,
00123 std::string const pdb_field,
00124 double const pdb_field_value)
00125 {
00126 cvm::fatal_error ("Error: colvarproxy::load_coords() has not been (re)redefined, "
00127 "__FILE__ at line __LINE__.\n");
00128 }
00129
00130
00131 inline void colvarproxy::load_atoms (char const *filename,
00132 std::vector<cvm::atom> &atoms,
00133 std::string const pdb_field,
00134 double const pdb_field_value)
00135 {
00136 cvm::fatal_error ("Error: colvarproxy::load_atoms() has not been (re)redefined, "
00137 "__FILE__ at line __LINE__.\n");
00138 }
00139
00140
00141 inline void colvarproxy::backup_file (char const *filename)
00142 {
00143
00144
00145 }
00146
00147
00148 #endif
00149
00150
00151
00152
00153
00154