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 **)
 
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 2211 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().

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

References DebugM, and molfile_dcdplugin_fini().

2460  {
2461  DebugM(3,"Destructing ScriptTcl\n");
2462 #ifdef NAMD_TCL
2463  if ( interp ) Tcl_DeleteInterp(interp);
2464  delete [] callbackname;
2465 #endif
2466  if (scriptBarrierWrapper != nullptr) delete scriptBarrierWrapper;
2468 }
#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 2362 of file ScriptTcl.C.

References NAMD_bug(), and NAMD_die().

Referenced by after_backend_init().

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

◆ load()

void ScriptTcl::load ( char *  scriptFile)

Definition at line 2419 of file ScriptTcl.C.

References NAMD_bug(), and NAMD_die().

Referenced by after_backend_init().

2419  {
2420 
2421 #ifdef NAMD_TCL
2422  int code = Tcl_EvalFile(interp,scriptFile);
2423  const char *result = Tcl_GetStringResult(interp);
2424  if (*result != 0) CkPrintf("TCL: %s\n",result);
2425  if (code != TCL_OK) {
2426  const char *errorInfo = Tcl_GetVar(interp,"errorInfo",0);
2427  NAMD_die(errorInfo ? errorInfo : "Unknown Tcl error");
2428  }
2429 #else
2430  NAMD_bug("ScriptTcl::load called without Tcl.");
2431 #endif
2432 
2433 }
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 2436 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().

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

◆ tclmain()

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

Definition at line 2402 of file ScriptTcl.C.

References NAMD_die().

Referenced by after_backend_init().

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

◆ tclsh()

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

Definition at line 2380 of file ScriptTcl.C.

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

Referenced by main().

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

◆ Controller

friend class Controller
friend

Definition at line 55 of file ScriptTcl.h.

◆ DataExchanger

friend class DataExchanger
friend

Definition at line 52 of file ScriptTcl.h.

◆ GlobalMasterTcl

friend class GlobalMasterTcl
friend

Definition at line 56 of file ScriptTcl.h.


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