Beispiel #1
0
/** Set nemd method to exchange and set nemd parameters */
int tclcommand_nemd_parse_exchange(Tcl_Interp *interp, int argc, char **argv) 
{
  int n_slabs, n_exchange;
  if (argc < 4) {
    Tcl_AppendResult(interp, "wrong # args:  ", (char *)NULL);
    return tclcommand_nemd_print_usage(interp);
  }
  if ( !ARG_IS_I(2, n_slabs) || !ARG_IS_I(3, n_exchange) ) {
    Tcl_AppendResult(interp, "wrong argument type:  ", (char *)NULL);
    return tclcommand_nemd_print_usage(interp);
  }
  /* parameter sanity */
  if ( n_slabs<0 || n_slabs%2!=0 ) {
    Tcl_AppendResult(interp, "nemd <n_slabs> must be non negative and even!",(char *)NULL);
    return (TCL_ERROR);
  }  
  if ( n_slabs > 0 && n_exchange < 0 ) {
    Tcl_AppendResult(interp, "nemd <n_exchange> must be positive!",(char *)NULL);
    return (TCL_ERROR);
  } 

  nemd_method = NEMD_METHOD_EXCHANGE;
  nemd_init(n_slabs, n_exchange, 0.0);
  return (TCL_OK);
}
Beispiel #2
0
int tclcommand_nemd(ClientData data, Tcl_Interp *interp, int argc,
                    char **argv) {
#ifdef NEMD
    int status = TCL_OK;

    INTEG_TRACE(fprintf(stderr, "%d: nemd:\n", this_node));
    Tcl_ResetResult(interp);

    /* print nemd status */
    if (argc == 1) {
        status = tclcommand_nemd_print_status(interp);
    } else if (ARG1_IS_S("off")) {
        nemd_method = NEMD_METHOD_OFF;
        status = nemd_free();
    } else if (ARG1_IS_S("exchange")) {
        status = tclcommand_nemd_parse_exchange(interp, argc, argv);
    } else if (ARG1_IS_S("shearrate")) {
        status = tclcommand_nemd_parse_shearrate(interp, argc, argv);
    } else if (ARG1_IS_S("profile")) {
        status = tclcommand_nemd_parse_and_print_profile(interp);
    } else if (ARG1_IS_S("viscosity")) {
        status = tclcommand_nemd_parse_and_print_viscosity(interp);
    } else {
        Tcl_AppendResult(interp, "Unkwnown keyword: \n", (char *)NULL);
        return tclcommand_nemd_print_usage(interp);
    }

    return gather_runtime_errors(interp, status);

#endif
    INTEG_TRACE(
        fprintf(stderr, "%d: call to nemd but not compiled in!\n", this_node));
    return tclcommand_nemd_print_usage(interp);
}
Beispiel #3
0
/** Set nemd method to shearrate and set nemd parameters */
int tclcommand_nemd_parse_shearrate(Tcl_Interp *interp, int argc, char **argv) 
{
  int n_slabs;
  double shearrate;
  if (argc < 4) {
    Tcl_AppendResult(interp, "wrong # args:  ", (char *)NULL);
    return tclcommand_nemd_print_usage(interp);
  }
  if ( !ARG_IS_I(2, n_slabs) || !ARG_IS_D(3, shearrate) ) {
    Tcl_AppendResult(interp, "wrong argument type:  ", (char *)NULL);
    return tclcommand_nemd_print_usage(interp);
  }
 /* parameter sanity */
  if ( n_slabs<0 || n_slabs%2!=0 ) {
    Tcl_AppendResult(interp, "nemd <n_slabs> must be non negative and even!",(char *)NULL);
    return (TCL_ERROR);
  }  
  nemd_method = NEMD_METHOD_SHEARRATE;
  nemd_init(n_slabs, 0, shearrate);
  return (TCL_OK);
}