Files
lammps-gran-kokkos/lib/colvars/colvarscript_commands_bias.h
2024-08-06 01:07:43 +02:00

214 lines
7.2 KiB
C++

// -*- c++ -*-
// This file is part of the Collective Variables module (Colvars).
// The original version of Colvars and its updates are located at:
// https://github.com/Colvars/colvars
// Please update all Colvars source files before making any changes.
// If you wish to distribute your changes, please submit them to the
// Colvars repository at GitHub.
CVSCRIPT(bias_bin,
"Get the current grid bin index (flattened if more than 1d)\n"
"bin : integer - Bin index",
0, 0,
"",
script->set_result_int(this_bias->current_bin());
return COLVARS_OK;
)
/// This is deprecated in the context of mwABF; no other known uses
/// But removing it may break user scripts
CVSCRIPT(bias_bincount,
"Get the number of samples at the given grid bin (1D ABF only for now)\n"
"samples : integer - Number of samples",
0, 1,
"index : integer - Grid index; defaults to current bin",
int index = this_bias->current_bin();
char const *indexarg =
script->obj_to_str(script->get_bias_cmd_arg(0, objc, objv));
if (indexarg) {
std::string const param(indexarg);
if (!(std::istringstream(param) >> index)) {
script->add_error_msg("bincount: error parsing bin index");
return COLVARSCRIPT_ERROR;
}
}
script->set_result_int(this_bias->bin_count(index));
return COLVARS_OK;
)
CVSCRIPT(bias_local_sample_count,
"Get the number of samples around the current bin"
"samples : integer - Number of samples",
0, 1,
"radius : integer - Sum over radius bins around current bin",
int radius = 0;
char const *arg =
script->obj_to_str(script->get_bias_cmd_arg(0, objc, objv));
if (arg) {
std::string const param(arg);
if (!(std::istringstream(param) >> radius)) {
script->add_error_msg("local_sample_count: error parsing radius");
return COLVARSCRIPT_ERROR;
}
}
script->set_result_str(cvm::to_str(this_bias->local_sample_count(radius)));
return COLVARS_OK;
)
CVSCRIPT(bias_binnum,
"Get the total number of grid points of this bias (1D ABF only for now)\n"
"Bins : integer - Number of grid points",
0, 0,
"",
int r = this_bias->bin_num();
if (r < 0) {
script->add_error_msg("Error: calling bin_num() for bias " +
this_bias->name);
return COLVARSCRIPT_ERROR;
}
script->set_result_int(r);
return COLVARS_OK;
)
CVSCRIPT(bias_delete,
"Delete this bias",
0, 0,
"",
delete this_bias;
return COLVARS_OK;
)
CVSCRIPT(bias_energy,
"Get the current energy of this bias\n"
"E : float - Energy value",
0, 0,
"",
script->set_result_real(this_bias->get_energy());
return COLVARS_OK;
)
CVSCRIPT(bias_get,
"Get the value of the given feature for this bias\n"
"state : 1/0 - State of the given feature",
1, 1,
"feature : string - Name of the feature",
return script->proc_features(this_bias, objc, objv);
)
CVSCRIPT(bias_getconfig,
"Return the configuration string of this bias\n"
"conf : string - Current configuration string",
0, 0,
"",
script->set_result_str(this_bias->get_config());
return COLVARS_OK;
)
CVSCRIPT(bias_help,
"Get a help summary or the help string of one bias subcommand\n"
"help : string - Help string",
0, 1,
"command : string - Get the help string of this specific command",
unsigned char *const cmdobj =
script->get_colvar_cmd_arg(0, objc, objv);
if (this_bias) {
}
if (cmdobj) {
std::string const cmdstr(script->obj_to_str(cmdobj));
if (cmdstr.size()) {
script->set_result_str(script->get_command_cmdline_help(colvarscript::use_bias,
cmdstr));
return cvm::get_error();
} else {
return COLVARSCRIPT_ERROR;
}
} else {
script->set_result_str(script->get_cmdline_help_summary(colvarscript::use_bias));
return COLVARS_OK;
}
)
CVSCRIPT(bias_load,
"Load data into this bias",
1, 1,
"prefix : string - Read from a file with this name or prefix",
char const *arg =
script->obj_to_str(script->get_bias_cmd_arg(0, objc, objv));
return this_bias->read_state_prefix(std::string(arg));
)
CVSCRIPT(bias_loadfromstring,
"Load state data into this bias from a string",
1, 1,
"buffer : string - String buffer containing the state information",
char const *buffer = script->obj_to_str(script->get_bias_cmd_arg(0, objc, objv));
return this_bias->read_state_string(buffer);
)
CVSCRIPT(bias_save,
"Save data from this bias into a file with the given prefix",
1, 1,
"prefix : string - Prefix for the state file of this bias",
std::string const prefix =
cvm::state_file_prefix(script->obj_to_str(script->get_bias_cmd_arg(0, objc, objv)));
return this_bias->write_state_prefix(prefix);
)
CVSCRIPT(bias_savetostring,
"Save data from this bias into a string and return it\n"
"state : string - The bias state",
0, 0,
"",
return this_bias->write_state_string(script->modify_str_result());
)
CVSCRIPT(bias_set,
"Set the given feature of this bias to a new value",
2, 2,
"feature : string - Name of the feature\n"
"value : string - String representation of the new feature value",
return script->proc_features(this_bias, objc, objv);
)
CVSCRIPT(bias_share,
"Share bias information with other replicas (multiple-walker scheme)",
0, 0,
"",
if (this_bias->replica_share() != COLVARS_OK) {
script->add_error_msg("Error: calling replica_share() for bias " +
this_bias->name);
return COLVARSCRIPT_ERROR;
}
return COLVARS_OK;
)
CVSCRIPT(bias_state,
"Print a string representation of the feature state of this bias\n"
"state : string - String representation of the bias features",
0, 0,
"",
this_bias->print_state();
return COLVARS_OK;
)
CVSCRIPT(bias_type,
"Print the type of this bias object\n"
"type : string - Type of this bias object (e.g. metadynamics)",
0, 0,
"",
script->set_result_str(this_bias->bias_type);
return COLVARS_OK;
)
CVSCRIPT(bias_update,
"Recompute this bias and return its up-to-date energy\n"
"E : float - Energy value",
0, 0,
"",
this_bias->update();
script->set_result_colvarvalue(this_bias->get_energy());
return COLVARS_OK;
)