NAMD
Classes | Public Member Functions | Static Public Member Functions | Friends | List of all members
ScriptTcl Class Reference

#include <ScriptTcl.h>

Classes

struct  SimpleBroadcastObjectWrapper
 

Public Member Functions

 ScriptTcl ()
 
 ~ScriptTcl ()
 
void eval (char *script)
 
void load (char *scriptFile)
 
void run ()
 
void tclmain (int, char **)
 
Tcl_Interp * get_tcl_interp ()
 
void measure (Vector *)
 

Static Public Member Functions

static int tclsh (int, char **)
 

Friends

class DataExchanger
 
class Controller
 
class GlobalMasterTcl
 
class colvarproxy_namd
 

Detailed Description

Definition at line 22 of file ScriptTcl.h.

Constructor & Destructor Documentation

◆ ScriptTcl()

ScriptTcl::ScriptTcl ( )

Definition at line 2212 of file ScriptTcl.C.

References DebugM, eabf_static_init(), molfile_dcdplugin_init(), molfile_dcdplugin_register(), psfgen_static_init(), register_cb(), and tcl_vector_math_init().

2212  : scriptBarrierWrapper(new SimpleBroadcastObjectWrapper()) {
2213  DebugM(3,"Constructing ScriptTcl\n");
2214 #ifdef NAMD_TCL
2215  interp = 0;
2216  callbackname = 0;
2217 #endif
2218  state = new NamdState;
2219  barrierStep = 0;
2220 
2223 
2224  initWasCalled = 0;
2225  runWasCalled = 0;
2226 
2227 #ifdef NAMD_TCL
2228  config = new ConfigList;
2229 
2230  // Create interpreter
2231  interp = Tcl_CreateInterp();
2232  psfgen_static_init(interp);
2233  eabf_static_init(interp);
2234  tcl_vector_math_init(interp);
2235  Tcl_CreateCommand(interp, "python", Tcl_python,
2236  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2237  Tcl_CreateCommand(interp, "startup", Tcl_startup,
2238  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2239  Tcl_CreateCommand(interp, "exit", Tcl_exit,
2240  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2241  Tcl_CreateCommand(interp, "abort", Tcl_abort,
2242  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2243  Tcl_CreateCommand(interp, "numPes", Tcl_numPes,
2244  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2245  Tcl_CreateCommand(interp, "numNodes", Tcl_numNodes,
2246  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2247  Tcl_CreateCommand(interp, "numPhysicalNodes", Tcl_numPhysicalNodes,
2248  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2249  Tcl_CreateCommand(interp, "numReplicas", Tcl_numReplicas,
2250  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2251  Tcl_CreateCommand(interp, "myReplica", Tcl_myReplica,
2252  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2253  Tcl_CreateCommand(interp, "replicaEval", Tcl_replicaEval,
2254  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2255  Tcl_CreateCommand(interp, "replicaYield", Tcl_replicaYield,
2256  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2257  Tcl_CreateCommand(interp, "replicaSendrecv", Tcl_replicaSendrecv,
2258  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2259  Tcl_CreateCommand(interp, "replicaSend", Tcl_replicaSend,
2260  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2261  Tcl_CreateCommand(interp, "replicaRecv", Tcl_replicaRecv,
2262  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2263  Tcl_CreateCommand(interp, "replicaBarrier", Tcl_replicaBarrier,
2264  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2265  Tcl_CreateCommand(interp, "replicaAtomSendrecv", Tcl_replicaAtomSendrecv,
2266  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2267  Tcl_CreateCommand(interp, "replicaAtomSend", Tcl_replicaAtomSend,
2268  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2269  Tcl_CreateCommand(interp, "replicaAtomRecv", Tcl_replicaAtomRecv,
2270  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2271  Tcl_CreateCommand(interp, "stdout", Tcl_stdout,
2272  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2273  Tcl_CreateCommand(interp, "print", Tcl_print,
2274  (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
2275  Tcl_CreateCommand(interp, "unknown", Tcl_config,
2276  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2277  Tcl_CreateCommand(interp, "param", Tcl_config,
2278  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2279  Tcl_CreateCommand(interp, "isset", Tcl_isset_config,
2280  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2281  Tcl_CreateCommand(interp, "istrue", Tcl_istrue_config,
2282  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2283  Tcl_CreateCommand(interp, "run", Tcl_run,
2284  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2285  Tcl_CreateCommand(interp, "minimize", Tcl_minimize,
2286  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2287  Tcl_CreateCommand(interp, "move", Tcl_move,
2288  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2289  Tcl_CreateCommand(interp, "moveallby", Tcl_moveallby,
2290  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2291  Tcl_CreateCommand(interp, "output", Tcl_output,
2292  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2293  Tcl_CreateCommand(interp, "measure", Tcl_measure,
2294  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2295  Tcl_CreateCommand(interp, "colvarbias", Tcl_colvarbias,
2296  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2297  Tcl_CreateCommand(interp, "colvarvalue", Tcl_colvarvalue,
2298  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2299  Tcl_CreateObjCommand(interp, "cv", Tcl_colvars,
2300  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2301  Tcl_CreateCommand(interp, "colvarfreq", Tcl_colvarfreq,
2302  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2303  Tcl_CreateCommand(interp, "checkpoint", Tcl_checkpoint,
2304  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2305  Tcl_CreateCommand(interp, "revert", Tcl_revert,
2306  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2307  Tcl_CreateCommand(interp, "checkpointStore", Tcl_checkpointReplica,
2308  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2309  Tcl_CreateCommand(interp, "checkpointLoad", Tcl_checkpointReplica,
2310  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2311  Tcl_CreateCommand(interp, "checkpointSwap", Tcl_checkpointReplica,
2312  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2313  Tcl_CreateCommand(interp, "checkpointFree", Tcl_checkpointReplica,
2314  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2315  Tcl_CreateCommand(interp, "reinitvels", Tcl_reinitvels,
2316  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2317  Tcl_CreateCommand(interp, "rescalevels", Tcl_rescalevels,
2318  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2319  Tcl_CreateCommand(interp, "reinitatoms", Tcl_reinitatoms,
2320  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2321  Tcl_CreateCommand(interp, "replicaDcdFile", Tcl_replicaDcdFile,
2322  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2323  Tcl_CreateCommand(interp, "replicaDcdSelectFile", Tcl_replicaDcdSelectFile,
2324  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2325  Tcl_CreateCommand(interp, "callback", Tcl_callback,
2326  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2327  Tcl_CreateCommand(interp, "coorfile", Tcl_coorfile,
2328  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2329  Tcl_CreateCommand(interp, "dumpbench", Tcl_dumpbench,
2330  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2331  Tcl_CreateObjCommand(interp, "consForceConfig", Tcl_consForceConfig,
2332  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2333  Tcl_CreateCommand(interp, "reloadCharges", Tcl_reloadCharges,
2334  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2335  // BEGIN gf
2336  Tcl_CreateCommand(interp, "reloadGridforceGrid", Tcl_reloadGridforceGrid,
2337  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2338  Tcl_CreateCommand(interp, "updateGridScale", Tcl_updateGridScale,
2339  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2340  // END gf
2341  Tcl_CreateObjCommand(interp, "gpuGlobalCreateClient", Tcl_gpuGlobalCreateClient,
2342  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2343  Tcl_CreateObjCommand(interp, "gpuGlobalRemoveClient", Tcl_gpuGlobalRemoveClient,
2344  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2345  Tcl_CreateObjCommand(interp, "gpuGlobalUpdateClient", Tcl_gpuGlobalUpdateClient,
2346  (ClientData) this, (Tcl_CmdDeleteProc *) NULL);
2347 #endif
2348 
2349 }
int eabf_static_init(Tcl_Interp *)
Definition: eabfTcl.C:179
int molfile_dcdplugin_init(void)
#define DebugM(x, y)
Definition: Debug.h:75
int psfgen_static_init(Tcl_Interp *)
int tcl_vector_math_init(Tcl_Interp *interp)
Definition: TclCommands.C:299
int molfile_dcdplugin_register(void *, vmdplugin_register_cb)
static int register_cb(void *v, vmdplugin_t *p)
Definition: ScriptTcl.C:57

◆ ~ScriptTcl()

ScriptTcl::~ScriptTcl ( )

Definition at line 2461 of file ScriptTcl.C.

References DebugM, and molfile_dcdplugin_fini().

2461  {
2462  DebugM(3,"Destructing ScriptTcl\n");
2463 #ifdef NAMD_TCL
2464  if ( interp ) Tcl_DeleteInterp(interp);
2465  delete [] callbackname;
2466 #endif
2467  if (scriptBarrierWrapper != nullptr) delete scriptBarrierWrapper;
2469 }
#define DebugM(x, y)
Definition: Debug.h:75
int molfile_dcdplugin_fini(void)

Member Function Documentation

◆ eval()

void ScriptTcl::eval ( char *  script)

Definition at line 2363 of file ScriptTcl.C.

References NAMD_bug(), and NAMD_die().

Referenced by after_backend_init().

2363  {
2364 
2365 #ifdef NAMD_TCL
2366  int code = Tcl_Eval(interp,script);
2367  const char *result = Tcl_GetStringResult(interp);
2368  if (*result != 0) CkPrintf("TCL: %s\n",result);
2369  if (code != TCL_OK) {
2370  const char *errorInfo = Tcl_GetVar(interp,"errorInfo",0);
2371  NAMD_die(errorInfo ? errorInfo : "Unknown Tcl error");
2372  }
2373 #else
2374  NAMD_bug("ScriptTcl::eval called without Tcl.");
2375 #endif
2376 
2377 }
void NAMD_bug(const char *err_msg)
Definition: common.C:195
void NAMD_die(const char *err_msg)
Definition: common.C:147

◆ get_tcl_interp()

Tcl_Interp* ScriptTcl::get_tcl_interp ( )
inline

Definition at line 32 of file ScriptTcl.h.

32 {return interp;}

◆ load()

void ScriptTcl::load ( char *  scriptFile)

Definition at line 2420 of file ScriptTcl.C.

References NAMD_bug(), and NAMD_die().

Referenced by after_backend_init().

2420  {
2421 
2422 #ifdef NAMD_TCL
2423  int code = Tcl_EvalFile(interp,scriptFile);
2424  const char *result = Tcl_GetStringResult(interp);
2425  if (*result != 0) CkPrintf("TCL: %s\n",result);
2426  if (code != TCL_OK) {
2427  const char *errorInfo = Tcl_GetVar(interp,"errorInfo",0);
2428  NAMD_die(errorInfo ? errorInfo : "Unknown Tcl error");
2429  }
2430 #else
2431  NAMD_bug("ScriptTcl::load called without Tcl.");
2432 #endif
2433 
2434 }
void NAMD_bug(const char *err_msg)
Definition: common.C:195
void NAMD_die(const char *err_msg)
Definition: common.C:147

◆ measure()

void ScriptTcl::measure ( Vector c)

Definition at line 1400 of file ScriptTcl.C.

References Node::coords, Measure::createCommands(), Measure::deleteCommands(), and Node::Object().

Referenced by Output::coordinate().

1400  {
1401  Measure::createCommands(interp);
1402  Node::Object()->coords = c;
1403  measure_result = Tcl_Eval(interp,measure_command);
1404  Node::Object()->coords = 0;
1405  Measure::deleteCommands(interp);
1406 }
static Node * Object()
Definition: Node.h:86
Vector * coords
Definition: Node.h:188
static void createCommands(Tcl_Interp *)
Definition: Measure.C:169
static void deleteCommands(Tcl_Interp *)
Definition: Measure.C:180

◆ run()

void ScriptTcl::run ( void  )

Definition at line 2437 of file ScriptTcl.C.

References NAMD_die(), Node::Object(), replica_barrier(), SCRIPT_END, SCRIPT_MINIMIZE, SCRIPT_RUN, Node::simParameters, and simParams.

Referenced by after_backend_init().

2437  {
2438 #else
2439 void ScriptTcl::run(char *scriptFile) {
2440 
2441  if ( NULL == scriptFile || NULL == (config = new ConfigList(scriptFile)) ) {
2442  NAMD_die("Simulation config file is empty.");
2443  }
2444 #endif
2445 
2446  if (runWasCalled == 0) {
2447  initcheck();
2449  if ( simParams->minimizeCGOn ) runController(SCRIPT_MINIMIZE);
2450  else runController(SCRIPT_RUN);
2451  runWasCalled = 1;
2452  }
2453 
2454  runController(SCRIPT_END);
2455 #if CMK_HAS_PARTITION
2456  replica_barrier();
2457 #endif
2458 
2459 }
static Node * Object()
Definition: Node.h:86
SimParameters * simParameters
Definition: Node.h:181
void run()
Definition: ScriptTcl.C:2437
void replica_barrier()
void NAMD_die(const char *err_msg)
Definition: common.C:147
#define simParams
Definition: Output.C:131

◆ tclmain()

void ScriptTcl::tclmain ( int  argc,
char **  argv 
)

Definition at line 2403 of file ScriptTcl.C.

References NAMD_die().

Referenced by after_backend_init().

2403  {
2404  Tcl_SetVar(interp, "argv0", argv[0], TCL_GLOBAL_ONLY);
2405  Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc-1), TCL_GLOBAL_ONLY);
2406  Tcl_Obj *argvPtr = Tcl_NewListObj(0, NULL);
2407  for ( int i=1; i<argc; ++i ) {
2408  Tcl_ListObjAppendElement(NULL, argvPtr, Tcl_NewStringObj(argv[i],-1));
2409  }
2410  Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY);
2411  int code = Tcl_EvalFile(interp,argv[0]);
2412  if (code != TCL_OK) {
2413  const char *errorInfo = Tcl_GetVar(interp,"errorInfo",0);
2414  NAMD_die(errorInfo ? errorInfo : "Unknown Tcl error");
2415  }
2416 }
void NAMD_die(const char *err_msg)
Definition: common.C:147

◆ tclsh()

int ScriptTcl::tclsh ( int  argc,
char **  argv 
)
static

Definition at line 2381 of file ScriptTcl.C.

References eabf_static_init(), psfgen_static_init(), and tcl_vector_math_init().

Referenced by main().

2381  {
2382  Tcl_Interp *interp = Tcl_CreateInterp();
2383  psfgen_static_init(interp);
2384  eabf_static_init(interp);
2385  tcl_vector_math_init(interp);
2386  Tcl_SetVar(interp, "argv0", argv[0], TCL_GLOBAL_ONLY);
2387  Tcl_SetVar2Ex(interp, "argc", NULL, Tcl_NewIntObj(argc-1), TCL_GLOBAL_ONLY);
2388  Tcl_Obj *argvPtr = Tcl_NewListObj(0, NULL);
2389  for ( int i=1; i<argc; ++i ) {
2390  Tcl_ListObjAppendElement(NULL, argvPtr, Tcl_NewStringObj(argv[i],-1));
2391  }
2392  Tcl_SetVar2Ex(interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY);
2393  int code = Tcl_EvalFile(interp,argv[0]);
2394  if (code != TCL_OK) {
2395  const char *errorInfo = Tcl_GetVar(interp,"errorInfo",0);
2396  fprintf(stderr,"%s\n",(errorInfo ? errorInfo : "Unknown Tcl error"));
2397  return -1;
2398  }
2399  return 0;
2400 }
int eabf_static_init(Tcl_Interp *)
Definition: eabfTcl.C:179
int psfgen_static_init(Tcl_Interp *)
int tcl_vector_math_init(Tcl_Interp *interp)
Definition: TclCommands.C:299

Friends And Related Function Documentation

◆ colvarproxy_namd

friend class colvarproxy_namd
friend

Definition at line 58 of file ScriptTcl.h.

◆ Controller

friend class Controller
friend

Definition at line 56 of file ScriptTcl.h.

◆ DataExchanger

friend class DataExchanger
friend

Definition at line 53 of file ScriptTcl.h.

◆ GlobalMasterTcl

friend class GlobalMasterTcl
friend

Definition at line 57 of file ScriptTcl.h.


The documentation for this class was generated from the following files: