00001
00007
00008
00009
00010
00011 #ifndef SCRIPTTCL_H
00012 #define SCRIPTTCL_H
00013
00014 #include "converse.h"
00015 #include "NamdTypes.h"
00016 #include "Broadcasts.h"
00017
00018 #ifdef NAMD_TCL
00019 #define USE_COMPAT_CONST
00020 #include <tcl.h>
00021 #endif
00022
00023 class ConfigList;
00024 class NamdState;
00025
00026 class ScriptTcl {
00027 public:
00028 ScriptTcl();
00029 ~ScriptTcl();
00030 void eval(char *script);
00031 void load(char *scriptFile);
00032 #ifdef NAMD_TCL
00033 void run();
00034 #else
00035 void run(char *scriptFile);
00036 #endif
00037 void measure(Vector *);
00038 private:
00039 char *scriptFile;
00040 ConfigList *config;
00041 NamdState *state;
00042 void suspend(void);
00043 int runWasCalled;
00044 int initWasCalled;
00045 void barrier();
00046 void initcheck();
00047 void reinitAtoms();
00048 SimpleBroadcastObject<int> scriptBarrier;
00049 int barrierStep;
00050 void runController(int task);
00051 void setParameter(const char* param, const char* value);
00052 void setParameter(const char* param, int value);
00053 #ifdef NAMD_TCL
00054 friend class Controller;
00055 friend class GlobalMasterTcl;
00056 Tcl_Interp *interp;
00057 static int Tcl_exit(ClientData, Tcl_Interp *, int, char **);
00058 static int Tcl_abort(ClientData, Tcl_Interp *, int, char **);
00059 static int Tcl_numPes(ClientData, Tcl_Interp *, int, char **);
00060 static int Tcl_numNodes(ClientData, Tcl_Interp *, int, char **);
00061 static int Tcl_numPhysicalNodes(ClientData, Tcl_Interp *, int, char **);
00062 static int Tcl_numReplicas(ClientData, Tcl_Interp *, int, char **);
00063 static int Tcl_myReplica(ClientData, Tcl_Interp *, int, char **);
00064 static int Tcl_replicaSendrecv(ClientData, Tcl_Interp *, int, char **);
00065 static int Tcl_replicaSend(ClientData, Tcl_Interp *, int, char **);
00066 static int Tcl_replicaRecv(ClientData, Tcl_Interp *, int, char **);
00067 static int Tcl_replicaBarrier(ClientData, Tcl_Interp *, int, char **);
00068 static int Tcl_print(ClientData, Tcl_Interp *, int, char **);
00069 static int Tcl_config(ClientData, Tcl_Interp *, int, char **);
00070 static int Tcl_param(ClientData, Tcl_Interp *, int, char **);
00071 static int Tcl_reinitvels(ClientData, Tcl_Interp *, int, char **);
00072 static int Tcl_rescalevels(ClientData, Tcl_Interp *, int, char **);
00073 static int Tcl_run(ClientData, Tcl_Interp *, int, char **);
00074 static int Tcl_minimize(ClientData, Tcl_Interp *, int, char **);
00075 static int Tcl_move(ClientData, Tcl_Interp *, int, char **);
00076 static int Tcl_moveallby(ClientData, Tcl_Interp *, int, char **);
00077 static int Tcl_output(ClientData, Tcl_Interp *, int, char **);
00078 static int Tcl_measure(ClientData, Tcl_Interp *, int, char **);
00079 static int Tcl_colvarbias(ClientData, Tcl_Interp *, int, char **);
00080 static int Tcl_checkpoint(ClientData, Tcl_Interp *, int, char **);
00081 static int Tcl_revert(ClientData, Tcl_Interp *, int, char **);
00082 static int Tcl_callback(ClientData, Tcl_Interp *, int, char **);
00083 static int Tcl_reinitatoms(ClientData, Tcl_Interp *, int, char **);
00084 static int Tcl_coorfile(ClientData, Tcl_Interp *, int, char **);
00085 static int Tcl_dumpbench(ClientData, Tcl_Interp *, int, char **);
00086 static int Tcl_consForceConfig(ClientData, Tcl_Interp *, int, Tcl_Obj *const objv[]);
00087 static int Tcl_reloadCharges(ClientData, Tcl_Interp *, int, char **);
00088 static int Tcl_reloadGridforceGrid(ClientData, Tcl_Interp *, int, char **);
00089 char *callbackname;
00090 void doCallback(const char *labels, const char *data);
00091 int doCallback() { return ! ! callbackname; }
00092 char *measure_command;
00093 int measure_result;
00094 #endif
00095 };
00096
00097 #endif
00098