int tclprint_to_result_SmStIA(Tcl_Interp *interp, int i, int j) { char buffer[TCL_DOUBLE_SPACE+TCL_INTEGER_SPACE]; IA_parameters *data = get_ia_param(i, j); Tcl_AppendResult(interp, "smooth-step ", (char *) NULL); Tcl_PrintDouble(interp, data->SmSt_d, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); sprintf(buffer, "%d", data->SmSt_n); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->SmSt_eps, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->SmSt_k0, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->SmSt_sig, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->SmSt_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
static int tclcommand_analyze_fluid_mass_gpu(Tcl_Interp* interp, int argc, char *argv[]){ char buffer[TCL_DOUBLE_SPACE]; double host_mass[1]; lb_calc_fluid_mass_GPU(host_mass); Tcl_PrintDouble(interp, host_mass[0], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); return TCL_OK; }
/* UpdateScrollbar -- * Call the -scrollcommand callback to sync the scrollbar. * Returns: Whatever the -scrollcommand does. */ static int UpdateScrollbar(Tcl_Interp *interp, ScrollHandle h) { Scrollable *s = h->scrollPtr; WidgetCore *corePtr = h->corePtr; char arg1[TCL_DOUBLE_SPACE + 2]; char arg2[TCL_DOUBLE_SPACE + 2]; int code; h->flags &= ~SCROLL_UPDATE_REQUIRED; if (s->scrollCmd == NULL) { return TCL_OK; } arg1[0] = arg2[0] = ' '; Tcl_PrintDouble(interp, (double)s->first / s->total, arg1+1); Tcl_PrintDouble(interp, (double)s->last / s->total, arg2+1); Tcl_Preserve(corePtr); code = Tcl_VarEval(interp, s->scrollCmd, arg1, arg2, NULL); if (WidgetDestroyed(corePtr)) { Tcl_Release(corePtr); return TCL_ERROR; } Tcl_Release(corePtr); if (code != TCL_OK && !Tcl_InterpDeleted(interp)) { /* Disable the -scrollcommand, add to stack trace: */ ckfree(s->scrollCmd); s->scrollCmd = 0; Tcl_AddErrorInfo(interp, /* @@@ "horizontal" / "vertical" */ "\n (scrolling command executed by "); Tcl_AddErrorInfo(interp, Tk_PathName(h->corePtr->tkwin)); Tcl_AddErrorInfo(interp, ")"); } return code; }
/* Calculate the CMS velocity of the system */ int tclcommand_system_CMS_velocity(ClientData data, Tcl_Interp * interp, int argc, char ** argv){ char buffer[256]; if (argc != 1 ) { return tcl_command_system_CMS_velocity_print_usage(interp); } else { if (ARG_IS_S_EXACT(0,"system_CMS_velocity")) { mpi_system_CMS_velocity(); Tcl_PrintDouble(interp, gal.cms_vel[0]/time_step, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, gal.cms_vel[1]/time_step, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, gal.cms_vel[2]/time_step, buffer); Tcl_AppendResult(interp, buffer, (char *)NULL); return TCL_OK; } else { return tcl_command_system_CMS_velocity_print_usage(interp); } } }
/* convert to a string from a double */ Tcl_DString* TSP_Util_lang_convert_string_double(Tcl_Interp* interp, Tcl_DString* targetVarName, double sourceVarName) { char str[500]; if (targetVarName != NULL) { Tcl_DStringSetLength(targetVarName, 0); } else { targetVarName = (Tcl_DString*) ckalloc(sizeof(Tcl_DString));; Tcl_DStringInit(targetVarName); } Tcl_PrintDouble(interp, sourceVarName, str); Tcl_DStringAppend(targetVarName, str, -1); return targetVarName; }
int tclcommand_metadynamics_print_stat(Tcl_Interp *interp, int argc, char **argv) { int j; char buffer[TCL_DOUBLE_SPACE]; /* In case nothing has been initialized yet */ if (meta_acc_fprofile == NULL) return (TCL_OK); argc -= 1; argv += 1; if ( ARG1_IS_S("current_coord") ) { /* Current value of the reaction coordinate */ Tcl_PrintDouble(interp, meta_val_xi, buffer); Tcl_AppendResult(interp,"",buffer, (char *)NULL); } else if ( ARG1_IS_S("coord_values") ) { /* Possible values of the reaction coordinate */ for (j = 0; j < meta_xi_num_bins; ++j) { Tcl_PrintDouble(interp, meta_xi_min+j*meta_xi_step, buffer); Tcl_AppendResult(interp,buffer," ", (char *)NULL); } } else if ( ARG1_IS_S("profile") ) { /* Values of the free energy profile */ for (j = 0; j < meta_xi_num_bins; ++j) { Tcl_PrintDouble(interp, meta_acc_fprofile[j], buffer); Tcl_AppendResult(interp,buffer," ", (char *)NULL); } } else if ( ARG1_IS_S("force") ) { /* Values of the biased force */ for (j = 0; j < meta_xi_num_bins; ++j) { Tcl_PrintDouble(interp, -1.*meta_acc_force[j], buffer); Tcl_AppendResult(interp,buffer," ", (char *)NULL); } } else { Tcl_AppendResult(interp, "Unknown option for 'metadynamics print_stat'", (char *)NULL); return (TCL_ERROR); } return (TCL_OK); }
int correlation_print_variance1(double_correlation* self, Tcl_Interp* interp) { char buffer[TCL_DOUBLE_SPACE]; if (self->n_data < 1) { Tcl_AppendResult(interp, buffer, "Error in print variance: No input data available", (char *)NULL); return TCL_ERROR; } for (unsigned i=0; i< self->dim_A; i++) { Tcl_PrintDouble(interp, self->A_accumulated_variance[i]/self->n_data - (self->A_accumulated_average[i]/self->n_data)*(self->A_accumulated_average[i]/self->n_data), buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); } return TCL_OK; }
int tclprint_to_result_inter_dpdIA(Tcl_Interp *interp, int i, int j) { char buffer[TCL_DOUBLE_SPACE]; IA_parameters *data = get_ia_param(i, j); Tcl_PrintDouble(interp, data->dpd_gamma, buffer); Tcl_AppendResult(interp, "inter_dpd ", buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->dpd_r_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); sprintf(buffer,"%i", data->dpd_wf); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); /* Tcl_PrintDouble(interp, data->dpd_pref2, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); */ Tcl_PrintDouble(interp, data->dpd_tgamma, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->dpd_tr_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); sprintf(buffer,"%i", data->dpd_twf); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); // Tcl_PrintDouble(interp, data->dpd_pref4, buffer); // Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
char * TkPixelPrintProc( ClientData clientData, /* not used */ Tk_Window tkwin, /* not used */ char *widgRec, /* Widget structure record */ int offset, /* Offset of tile in record */ Tcl_FreeProc **freeProcPtr) /* not used */ { double *doublePtr = (double *) (widgRec + offset); char *p = (char *) ckalloc(24); Tcl_PrintDouble(NULL, *doublePtr, p); *freeProcPtr = TCL_DYNAMIC; return p; }
int tclcommand_observable_print(Tcl_Interp* interp, int argc, char** argv, int* change, observable* obs) { char buffer[TCL_DOUBLE_SPACE]; if ( observable_calculate(obs) ) { Tcl_AppendResult(interp, "\nFailed to compute observable tclcommand\n", (char *)NULL ); return TCL_ERROR; } if (argc==0) { for (int i = 0; i<obs->n; i++) { Tcl_PrintDouble(interp, obs->last_value[i], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL ); } } else if (argc>0 && ARG0_IS_S("formatted")) { tclcommand_observable_print_formatted(interp, argc-1, argv+1, change, obs, obs->last_value); } else { Tcl_AppendResult(interp, "Unknown argument to observable print: ", argv[0], "\n", (char *)NULL ); return TCL_ERROR; } return TCL_OK; }
int tclprint_to_result_CoulombIA(Tcl_Interp *interp) { #ifdef ELECTROSTATICS char buffer[TCL_DOUBLE_SPACE + 2*TCL_INTEGER_SPACE]; if (coulomb.method == COULOMB_NONE) { Tcl_AppendResult(interp, "coulomb 0.0", (char *) NULL); return (TCL_OK); } Tcl_PrintDouble(interp, coulomb.bjerrum, buffer); Tcl_AppendResult(interp, "{coulomb ", buffer, " ", (char *) NULL); switch (coulomb.method) { #ifdef P3M case COULOMB_ELC_P3M: tclprint_to_result_p3m(interp); tclprint_to_result_ELC(interp); break; case COULOMB_P3M_GPU: case COULOMB_P3M: tclprint_to_result_p3m(interp); break; #endif case COULOMB_DH: tclprint_to_result_dh(interp); break; case COULOMB_RF: tclprint_to_result_rf(interp,"rf"); break; case COULOMB_INTER_RF: tclprint_to_result_rf(interp,"inter_rf"); break; case COULOMB_MMM1D: tclprint_to_result_MMM1D(interp); break; #ifdef MMM1D_GPU case COULOMB_MMM1D_GPU: tclprint_to_result_MMM1DGPU(interp); break; #endif case COULOMB_MMM2D: tclprint_to_result_MMM2D(interp); break; case COULOMB_MAGGS: tclprint_to_result_Maggs(interp); break; #ifdef EWALD_GPU case COULOMB_EWALD_GPU: tclprint_to_result_ewaldgpu(interp); break; #endif #ifdef SCAFACOS case COULOMB_SCAFACOS: tclprint_to_result_scafacos(interp); break; #endif default: break; } Tcl_AppendResult(interp, "}",(char *) NULL); #else Tcl_AppendResult(interp, "ELECTROSTATICS not compiled (see config.hpp)",(char *) NULL); #endif return (TCL_OK); }
static void UpdateStringOfMM( register Tcl_Obj *objPtr) /* pixel obj with string rep to update. */ { MMRep *mmPtr; char buffer[TCL_DOUBLE_SPACE]; register int len; mmPtr = (MMRep *) objPtr->internalRep.twoPtrValue.ptr1; /* assert( mmPtr->units == -1 && objPtr->bytes == NULL ); */ if ((mmPtr->units != -1) || (objPtr->bytes != NULL)) { Tcl_Panic("UpdateStringOfMM: false precondition"); } Tcl_PrintDouble(NULL, mmPtr->value, buffer); len = (int)strlen(buffer); objPtr->bytes = (char *) ckalloc((unsigned) len + 1); strcpy(objPtr->bytes, buffer); objPtr->length = len; }
int tclcommand_adress_parse_print(Tcl_Interp *interp,int argc, char **argv){ int topo=(int)adress_vars[0],dim; char buffer[3*TCL_DOUBLE_SPACE]; argv+=2;argc-=2; Tcl_ResetResult(interp); if (topo == 0) { Tcl_AppendResult(interp,"adress topo 0", (char *)NULL); return TCL_OK; } else if (topo == 1) { Tcl_PrintDouble(interp, adress_vars[1], buffer); Tcl_AppendResult(interp,"adress topo 1 width ",buffer, (char *)NULL); return TCL_OK; } //topo 2 and 3 sprintf(buffer,"%i",topo); Tcl_AppendResult(interp,"adress topo ",buffer," width ",(char *)NULL); Tcl_PrintDouble(interp, adress_vars[1], buffer); Tcl_AppendResult(interp,buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, adress_vars[2], buffer); Tcl_AppendResult(interp,buffer, " center ", (char *)NULL); if (topo==2) { dim=(int)adress_vars[3]; if (dim==0) sprintf(buffer,"x"); else if (dim==1) sprintf(buffer,"y"); else sprintf(buffer,"z"); Tcl_AppendResult(interp,buffer," ", (char *)NULL); Tcl_PrintDouble(interp, adress_vars[4], buffer); } else{ // topo == 3 Tcl_PrintDouble(interp, adress_vars[3], buffer); Tcl_AppendResult(interp,buffer," ", (char *)NULL); Tcl_PrintDouble(interp, adress_vars[4], buffer); Tcl_AppendResult(interp,buffer," ", (char *)NULL); Tcl_PrintDouble(interp, adress_vars[5], buffer); } Tcl_AppendResult(interp,buffer, " wf ", (char *)NULL); sprintf(buffer,"%i",(int)adress_vars[6]); Tcl_AppendResult(interp,buffer, (char *)NULL); return TCL_OK; }
int tclcommand_observable_print(Tcl_Interp* interp, int argc, char** argv, int* change, observable* obs) { char buffer[TCL_DOUBLE_SPACE]; double* values=(double*)malloc(obs->n*sizeof(double)); if ( (*obs->fun)(obs->args, values, obs->n) ) { Tcl_AppendResult(interp, "\nFailed to compute observable tclcommand\n", (char *)NULL ); return TCL_ERROR; } if (argc==0) { for (int i = 0; i<obs->n; i++) { Tcl_PrintDouble(interp, values[i], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL ); } } else if (argc>0 && ARG0_IS_S("formatted")) { tclcommand_observable_print_formatted(interp, argc-1, argv+1, change, obs, values); } else { Tcl_AppendResult(interp, "Unknown argument to observable print: ", argv[0], "\n", (char *)NULL ); return TCL_ERROR; } free(values); return TCL_OK; }
/** Write a vector of doubles as string */ int uwerr_write_tcl_vector(Tcl_Interp * interp, double * in, int in_len, char * out) { char str[TCL_DOUBLE_SPACE]; int i, cur_len = 0; if (!out) return -1; out[0] = 0; for (i = 0; i < in_len; ++i) { Tcl_PrintDouble(interp, in[i], str); strcat(out+cur_len, str); cur_len += strlen(str); out[cur_len] = ' '; // overwrite the trailing NULL out[cur_len+1] = 0; cur_len += 1; } return 0; }
/* Calculate the CMS of the system */ int tclcommand_system_CMS(ClientData data, Tcl_Interp * interp, int argc, char ** argv){ char buffer[256]; double cmspos[3]; int box[3]; if (argc != 1 && argc != 2 ) { return tcl_command_system_CMS_print_usage(interp); } else { if (ARG_IS_S_EXACT(0,"system_CMS")) { if ( argc == 2 ) { if (ARG_IS_S_EXACT(1,"folded")) { mpi_system_CMS(); memmove(cmspos, gal.cms, 3*sizeof(double)); box[0] = 0; box[1] = 0; box[2] = 0; fold_position(cmspos, box); Tcl_PrintDouble(interp, cmspos[0], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, cmspos[1], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, cmspos[2], buffer); Tcl_AppendResult(interp, buffer, (char *)NULL); return TCL_OK; } else { return tcl_command_system_CMS_print_usage(interp); } } else { mpi_system_CMS(); Tcl_PrintDouble(interp, gal.cms[0], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, gal.cms[1], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, gal.cms[2], buffer); Tcl_AppendResult(interp, buffer, (char *)NULL); return TCL_OK; } } else { return tcl_command_system_CMS_print_usage(interp); } } }
int tclcommand_lbfluid_print_interpolated_velocity(Tcl_Interp *interp, int argc, char **argv) { #ifdef LB double p[3], v[3]; char buffer[3*TCL_DOUBLE_SPACE+3]; if (argc!=3) { printf("usage: print_interpolated_velocity $x $y $z"); return TCL_ERROR; } for (int i = 0; i < 3; i++) { if (!ARG_IS_D(i, p[i])) printf("usage: print_interpolated_velocity $x $y $z"); } lb_lbfluid_get_interpolated_velocity_global(p, v); for (int i = 0; i < 3; i++) { Tcl_PrintDouble(interp, v[i], buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); } return TCL_OK; #else Tcl_AppendResult(interp, "LB is not compiled in!", NULL); return TCL_ERROR; #endif }
int tclprint_to_result_p3m(Tcl_Interp *interp) { char buffer[TCL_DOUBLE_SPACE]; Tcl_PrintDouble(interp, p3m.params.r_cut, buffer); if(coulomb.method == COULOMB_P3M_GPU) { Tcl_AppendResult(interp, "p3m gpu ", buffer, " ", (char *) NULL); } else { Tcl_AppendResult(interp, "p3m ", buffer, " ", (char *) NULL); } sprintf(buffer,"{ %d %d %d }", p3m.params.mesh[0], p3m.params.mesh[1], p3m.params.mesh[2]); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); sprintf(buffer,"%d",p3m.params.cao); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, p3m.params.alpha, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, p3m.params.accuracy, buffer); Tcl_AppendResult(interp, buffer, (char *) NULL); Tcl_AppendResult(interp, "} {coulomb epsilon ", (char *) NULL); if (p3m.params.epsilon == P3M_EPSILON_METALLIC) Tcl_AppendResult(interp, " metallic ", (char *) NULL); else { Tcl_PrintDouble(interp, p3m.params.epsilon, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); } sprintf(buffer,"%d",p3m.params.inter); Tcl_AppendResult(interp, "n_interpol ", buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, p3m.params.mesh_off[0], buffer); Tcl_AppendResult(interp, "mesh_off ", buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, p3m.params.mesh_off[1], buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, p3m.params.mesh_off[2], buffer); Tcl_AppendResult(interp, buffer, (char *) NULL); return TCL_OK; }
/// parser for the forcecap int tclcommand_inter_parse_forcecap(Tcl_Interp * interp, int argc, char ** argv) { char buffer[TCL_DOUBLE_SPACE]; double forcecap; if (argc == 0) { if (force_cap == -1.0) Tcl_AppendResult(interp, "forcecap individual", (char *) NULL); else { Tcl_PrintDouble(interp, force_cap, buffer); Tcl_AppendResult(interp, "forcecap ", buffer, (char *) NULL); } return TCL_OK; } if (argc > 1) { Tcl_AppendResult(interp, "inter forcecap takes at most 1 parameter", (char *) NULL); return TCL_ERROR; } if (ARG0_IS_S("individual")){ forcecap = -1.0; CHECK_VALUE(forcecap_set_params(forcecap), "If you can read this, you should change it. (Use the source Luke!)"); } else if (! ARG0_IS_D(forcecap) || forcecap < 0) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "force cap must be a nonnegative double value or \"individual\"", (char *) NULL); return TCL_ERROR; } CHECK_VALUE(forcecap_set_params(forcecap), "If you can read this, you should change it. (Use the source Luke!)"); }
int tclcommand_analyze_parse_and_print_check_mol(Tcl_Interp *interp,int argc, char **argv){ int j,count=0; double dist; char buffer[TCL_DOUBLE_SPACE]; Particle p; updatePartCfg(WITHOUT_BONDS); for(j=0; j<n_total_particles; j++){ if (!ifParticleIsVirtual(&partCfg[j])) continue; get_particle_data(j,&p); //dist=min_distance(partCfg[j].r.p,p.r.p); unfold_position(p.r.p,p.l.i); dist=distance(partCfg[j].r.p,p.r.p); if (dist > 0.01){ if (count==0) Tcl_AppendResult(interp,"BEGIN Particle Missmatch: \n", (char *)NULL); sprintf(buffer,"%i",j); Tcl_AppendResult(interp,"Particle ",buffer, (char *)NULL); Tcl_PrintDouble(interp,partCfg[j].r.p[0] , buffer); Tcl_AppendResult(interp," partCfg x ",buffer, (char *)NULL); Tcl_PrintDouble(interp,partCfg[j].r.p[1] , buffer); Tcl_AppendResult(interp," y ",buffer, (char *)NULL); Tcl_PrintDouble(interp,partCfg[j].r.p[2] , buffer); Tcl_AppendResult(interp," z ",buffer, (char *)NULL); Tcl_PrintDouble(interp,p.r.p[0] , buffer); Tcl_AppendResult(interp," my_partCfg x ",buffer, (char *)NULL); Tcl_PrintDouble(interp,p.r.p[1] , buffer); Tcl_AppendResult(interp," y ",buffer, (char *)NULL); Tcl_PrintDouble(interp,p.r.p[2] , buffer); Tcl_AppendResult(interp," z ",buffer, (char *)NULL); Tcl_PrintDouble(interp, dist, buffer); Tcl_AppendResult(interp," dist ",buffer,"\n", (char *)NULL); count++; } } if (count!=0){ Tcl_AppendResult(interp,"END Particle Missmatch\n", (char *)NULL); return(TCL_ERROR); } return(TCL_OK); }
int tclprint_to_result_ljcosIA(Tcl_Interp *interp, int i, int j) { char buffer[TCL_DOUBLE_SPACE]; IA_parameters *data = get_ia_param(i, j); Tcl_PrintDouble(interp, data->LJCOS_eps, buffer); Tcl_AppendResult(interp, "lj-cos ", buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_sig, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_offset, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_alfa, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_beta, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJCOS_rmin, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
int tclprint_to_result_drudeIA(Tcl_Interp *interp, Bonded_ia_parameters *params) { char buffer[TCL_DOUBLE_SPACE]; Tcl_PrintDouble(interp, params->p.drude.temp_core, buffer); Tcl_AppendResult(interp, "DRUDE ", buffer, " ", (char *) NULL); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.gamma_core, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.temp_drude, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.gamma_drude, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.k, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.mass_drude, buffer); Tcl_AppendResult(interp, buffer, " ", (char *)NULL); Tcl_PrintDouble(interp, params->p.drude.r_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
/** Hand over velocity profile to tcl interpreter */ int tclcommand_nemd_parse_and_print_profile(Tcl_Interp *interp) { int i; double val; char buffer[TCL_DOUBLE_SPACE]; INTEG_TRACE(fprintf(stderr,"%d: tclcommand_nemd_parse_and_print_profile:\n",this_node)); if(nemd_method == NEMD_METHOD_OFF) { Tcl_AppendResult(interp, "nemd is off", (char *)NULL); return (TCL_OK); } for(i=0;i<nemddata.n_slabs;i++) { /* note: output velocities as usual have to be resacled by 1/time_step! */ val = nemddata.velocity_profile[i]/(nemddata.profile_norm*time_step); Tcl_PrintDouble(interp, val, buffer); Tcl_AppendResult(interp," ", buffer, (char *)NULL); nemddata.velocity_profile[i] = 0.0; } nemddata.profile_norm = 0; return (TCL_OK); }
int tclprint_to_result_DipolarIA(Tcl_Interp *interp) { char buffer[TCL_DOUBLE_SPACE + 2*TCL_INTEGER_SPACE]; if (coulomb.Dmethod == DIPOLAR_NONE) { Tcl_AppendResult(interp, "magnetic 0.0", (char *) NULL); return (TCL_OK); } Tcl_PrintDouble(interp, coulomb.Dbjerrum, buffer); Tcl_AppendResult(interp, "{magnetic ", buffer, " ", (char *) NULL); switch (coulomb.Dmethod) { #ifdef DP3M case DIPOLAR_MDLC_P3M: tclprint_to_result_dp3m(interp); tclprint_to_result_MDLC(interp); break; case DIPOLAR_P3M: tclprint_to_result_dp3m(interp); break; #endif case DIPOLAR_MDLC_DS: tclprint_to_result_Magnetic_dipolar_direct_sum_(interp); tclprint_to_result_MDLC(interp); break; case DIPOLAR_ALL_WITH_ALL_AND_NO_REPLICA: tclprint_to_result_DAWAANR(interp); break; case DIPOLAR_DS: tclprint_to_result_Magnetic_dipolar_direct_sum_(interp); break; #ifdef DIPOLAR_DIRECT_SUM case DIPOLAR_DS_GPU: tclprint_to_result_dds_gpu(interp); break; #endif #ifdef SCAFACOS_DIPOLES case DIPOLAR_SCAFACOS: tclprint_to_result_scafacos(interp); break; #endif default: break; } Tcl_AppendResult(interp, "}",(char *) NULL); return (TCL_OK); }
int tclprint_to_result_ljIA(Tcl_Interp *interp, int i, int j) { char buffer[TCL_DOUBLE_SPACE]; IA_parameters *data = get_ia_param(i, j); Tcl_PrintDouble(interp, data->LJ_eps, buffer); Tcl_AppendResult(interp, "lennard-jones ", buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_sig, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_shift, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_offset, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_capradius, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->LJ_min, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
int tclprint_to_result_ELC(Tcl_Interp *interp) { char buffer[TCL_DOUBLE_SPACE]; Tcl_PrintDouble(interp, elc_params.maxPWerror, buffer); Tcl_AppendResult(interp, "} {coulomb elc ", buffer, (char *) NULL); Tcl_PrintDouble(interp, elc_params.gap_size, buffer); Tcl_AppendResult(interp, " ", buffer, (char *) NULL); Tcl_PrintDouble(interp, elc_params.far_cut, buffer); Tcl_AppendResult(interp, " ", buffer, (char *) NULL); if (!elc_params.neutralize) Tcl_AppendResult(interp, " noneutralization", (char *) NULL); if (elc_params.dielectric_contrast_on) { Tcl_PrintDouble(interp, elc_params.di_top, buffer); Tcl_AppendResult(interp, " dielectric ", buffer, (char *) NULL); Tcl_PrintDouble(interp, elc_params.di_mid, buffer); Tcl_AppendResult(interp, " ", buffer, (char *) NULL); Tcl_PrintDouble(interp, elc_params.di_bot, buffer); Tcl_AppendResult(interp, " ", buffer, (char *) NULL); Tcl_PrintDouble(interp, elc_params.space_layer, buffer); Tcl_AppendResult(interp, " ", buffer, (char *) NULL); } return TCL_OK; }
int tclprint_to_result_BMHTFIA(Tcl_Interp *interp, int i, int j) { char buffer[TCL_DOUBLE_SPACE+TCL_INTEGER_SPACE]; IA_parameters *data = get_ia_param(i, j); Tcl_AppendResult(interp, "bmhtf-nacl ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_A, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_B, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_C, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_D, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_sig, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); Tcl_PrintDouble(interp, data->BMHTF_cut, buffer); Tcl_AppendResult(interp, buffer, " ", (char *) NULL); return TCL_OK; }
int tclcommand_setmd(ClientData data, Tcl_Interp *interp, int argc, char **argv) { union { int intbuf[MAX_DIMENSION]; double doublebuf[MAX_DIMENSION]; } databuf; char buffer[TCL_DOUBLE_SPACE + 5]; int i, j; int all = (argc == 1), writing = (argc >= 3); /* loop over all global variables. Has two purposes: either we write al variables or search for the one to write */ for (i = 0; fields[i].data != NULL; i++) { if (all || !strncmp(argv[1], fields[i].name, strlen(argv[1]))) { if (!all) { if ((int)strlen(argv[1]) < fields[i].min_length) { Tcl_AppendResult(interp, "Argument \"",argv[1],"\" not long ", (char *) NULL); Tcl_AppendResult(interp, "enough to identify a setmd variable!", (char *) NULL); return (TCL_ERROR); } if (writing) { /* set */ /* parse in data */ if (argc != 2 + fields[i].dimension) { sprintf(buffer, "%d", fields[i].dimension); Tcl_AppendResult(interp, "\"", argv[1], "\" has dimension ", buffer, (char *) NULL); sprintf(buffer, " not %d", argc - 2); Tcl_AppendResult(interp, buffer, (char *) NULL); return (TCL_ERROR); } /* get new value */ for (j = 0; j < fields[i].dimension; j++) { switch (fields[i].type) { case TYPE_INT: if (Tcl_GetInt(interp, argv[2 + j], databuf.intbuf + j) == TCL_ERROR) return (TCL_ERROR); break; case TYPE_BOOL: { int dta; if (Tcl_GetInt(interp, argv[2 + j], &dta)) return (TCL_ERROR); if (dta) { databuf.intbuf[0] |= (1L << j); } else { databuf.intbuf[0] &= ~(1L << j); } break; } case TYPE_DOUBLE: if (Tcl_GetDouble(interp, argv[2 + j], databuf.doublebuf + j)) return (TCL_ERROR); break; default: ; } } if (find_callback(i)(interp, databuf.intbuf) != TCL_OK) return gather_runtime_errors(interp, TCL_ERROR); /* fall through to write out the set value immediately again */ } } /* get */ if (all) { if (i != 0) Tcl_AppendResult(interp, " ", (char *)NULL); Tcl_AppendResult(interp, "{", fields[i].name, " ", (char *)NULL); } for (j = 0; j < fields[i].dimension; j++) { switch (fields[i].type) { case TYPE_INT: sprintf(buffer, "%d", ((int *)fields[i].data)[j]); break; case TYPE_BOOL: { if ((*(int *)fields[i].data) & (1L << j)) strcpy(buffer, "1"); else strcpy(buffer, "0"); break; } case TYPE_DOUBLE: Tcl_PrintDouble(interp, ((double *)fields[i].data)[j], buffer); break; default: ; } Tcl_AppendResult(interp, buffer, (char *) NULL); if (j < fields[i].dimension - 1) Tcl_AppendResult(interp, " ", (char *) NULL); } if (all) Tcl_AppendResult(interp, "}", (char *)NULL); /* wrote out one value, so skip rest */ if (!all) { if (writing) return gather_runtime_errors(interp, TCL_OK); else return (TCL_OK); } } } if (all) return TCL_OK; Tcl_AppendResult(interp, "unknown md variable \"", argv[1], "\"", (char *) NULL); return (TCL_ERROR); }
/** Parses the ICCP3M command. */ int tclcommand_iccp3m(ClientData data, Tcl_Interp *interp, int argc, char **argv) { char buffer[TCL_DOUBLE_SPACE]; if(iccp3m_initialized==0){ iccp3m_init(); iccp3m_initialized=1; } if(argc < 2 ) { Tcl_AppendResult(interp, "Usage of ICCP3M: RTFM", (char *)NULL); return (TCL_ERROR); } if (argc == 2 ){ if(ARG_IS_S(1,"iterate")) { if (iccp3m_cfg.set_flag==0) { Tcl_AppendResult(interp, "iccp3m parameters not set!", (char *)NULL); return (TCL_ERROR); } else { Tcl_PrintDouble(interp,mpi_iccp3m_iteration(0),buffer); Tcl_AppendResult(interp, buffer, (char *) NULL); return TCL_OK; } } else if(ARG_IS_S(1,"no_iterations")) { Tcl_PrintDouble(interp,iccp3m_cfg.citeration,buffer); Tcl_AppendResult(interp, buffer, (char *) NULL); return TCL_OK; } } else { if(ARG_IS_I(1, iccp3m_cfg.n_ic)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M: First argument has to be the number of induced charges", (char *)NULL); return (TCL_ERROR); } while (argc > 0) { if (ARG0_IS_S("convergence")) { if (argc>1 && ARG1_IS_D(iccp3m_cfg.convergence)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: convergence <convergence>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("relaxation")) { if (argc>1 && ARG1_IS_D(iccp3m_cfg.relax)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: convergence <convergence>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("eps_out")) { if (argc>1 && ARG1_IS_D(iccp3m_cfg.eout)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: eps_out <eps_out>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("ext_field")) { if (argc>1 && ARG1_IS_D(iccp3m_cfg.extx) && ARG_IS_D(2,iccp3m_cfg.exty) && ARG_IS_D(3,iccp3m_cfg.extz)) { argc-=4; argv+=4; } else { Tcl_AppendResult(interp, "ICCP3M Usage: eps_out <eps_out>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("max_iterations")) { if (argc>1 && ARG1_IS_I(iccp3m_cfg.num_iteration)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: max_iterations <max_iterations>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("first_id")) { if (argc>1 && ARG1_IS_I(iccp3m_cfg.first_id)) { argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: first_id <first_id>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("normals")) { if (argc>1) { if (tclcommand_iccp3m_parse_normals(interp, iccp3m_cfg.n_ic, argv[1]) != TCL_OK) { return TCL_ERROR; } argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: normals <List of normal vectors>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("areas")) { if (argc>1) { if (tclcommand_iccp3m_parse_double_list(interp, iccp3m_cfg.n_ic, argv[1], ICCP3M_AREA)!=TCL_OK) { return TCL_ERROR; } argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: areas <list of areas>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("sigmas")) { if (argc>1) { if (tclcommand_iccp3m_parse_double_list(interp, iccp3m_cfg.n_ic, argv[1], ICCP3M_SIGMA)!=TCL_OK) { return TCL_ERROR; } argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: sigmas <list of sigmas>", (char *)NULL); return (TCL_ERROR); } } else if (ARG0_IS_S("epsilons")) { if (argc>1) { if (tclcommand_iccp3m_parse_double_list(interp, iccp3m_cfg.n_ic, argv[1], ICCP3M_EPSILON) != TCL_OK) { return TCL_ERROR; } argc-=2; argv+=2; } else { Tcl_AppendResult(interp, "ICCP3M Usage: epsilons <list of epsilons>", (char *)NULL); return (TCL_ERROR); } } else { Tcl_AppendResult(interp, "Unknown Argument to ICCP3M ", argv[0], (char *)NULL); return (TCL_ERROR); } } } iccp3m_initialized=1; iccp3m_cfg.set_flag = 1; if (!iccp3m_cfg.areas || !iccp3m_cfg.ein || !iccp3m_cfg.nvectorx) return TCL_ERROR; if (!iccp3m_cfg.sigma) { iccp3m_cfg.sigma = (double*) Utils::malloc(iccp3m_cfg.n_ic*sizeof(double)); memset(iccp3m_cfg.sigma, 0, iccp3m_cfg.n_ic*sizeof(double)); } mpi_iccp3m_init(0); return TCL_OK; }
int tclcommand_inter_print_all(Tcl_Interp *interp) { int i, j, start = 1; for (i = 0; i < n_bonded_ia; i++) { if (bonded_ia_params[i].type != BONDED_IA_NONE) { if (start) { Tcl_AppendResult(interp, "{", (char *)NULL); start = 0; } else Tcl_AppendResult(interp, " {", (char *)NULL); tclprint_to_result_BondedIA(interp, i); Tcl_AppendResult(interp, "}", (char *)NULL); } } for (i = 0; i < n_particle_types; i++) for (j = i; j < n_particle_types; j++) { if (checkIfParticlesInteract(i, j)) { if (start) { Tcl_AppendResult(interp, "{", (char *)NULL); start = 0; } else Tcl_AppendResult(interp, " {", (char *)NULL); tclprint_to_result_NonbondedIA(interp, i, j); Tcl_AppendResult(interp, "}", (char *)NULL); } } #ifdef ELECTROSTATICS if(coulomb.method != COULOMB_NONE) { if (start) start = 0; else Tcl_AppendResult(interp, " ", (char *)NULL); /* here the curled braces will be set inside \ref tclprint_to_result_CoulombIA because electrostatics might be using several lists */ tclprint_to_result_CoulombIA(interp); } #endif #ifdef DIPOLES if(coulomb.Dmethod != DIPOLAR_NONE) { if (start) start = 0; else Tcl_AppendResult(interp, " ", (char *)NULL); /* here the curled braces will be set inside \ref tclprint_to_result_DipolarIA because magnetostatics might be using several lists */ tclprint_to_result_DipolarIA(interp); } #endif if(force_cap != 0.0) { char buffer[TCL_DOUBLE_SPACE]; if (start) { Tcl_AppendResult(interp, "{", (char *)NULL); start = 0; } else Tcl_AppendResult(interp, " {", (char *)NULL); if (force_cap == -1.0) Tcl_AppendResult(interp, "forcecap individual", (char *)NULL); else { Tcl_PrintDouble(interp, force_cap, buffer); Tcl_AppendResult(interp, "forcecap ", buffer, (char *) NULL); } Tcl_AppendResult(interp, "}", (char *)NULL); } return (TCL_OK); }