Skip to content
Snippets Groups Projects
Commit 05f86833 authored by Omar Valsson's avatar Omar Valsson
Browse files

Added an option to print only masses or charges

parent 2ff0f349
No related branches found
No related tags found
No related merge requests found
......@@ -96,6 +96,8 @@ class DumpMassCharge:
string file;
bool first;
bool second;
bool print_masses;
bool print_charges;
public:
explicit DumpMassCharge(const ActionOptions&);
~DumpMassCharge();
......@@ -115,6 +117,8 @@ void DumpMassCharge::registerKeywords( Keywords& keys ) {
keys.add("compulsory","STRIDE","1","the frequency with which the atoms should be output");
keys.add("atoms", "ATOMS", "the atom indices whose charges and masses you would like to print out");
keys.add("compulsory", "FILE", "file on which to output charges and masses.");
keys.addFlag("ONLY_MASSES",false,"Only output masses to file");
keys.addFlag("ONLY_CHARGES",false,"Only output charges to file");
}
DumpMassCharge::DumpMassCharge(const ActionOptions&ao):
......@@ -122,7 +126,9 @@ DumpMassCharge::DumpMassCharge(const ActionOptions&ao):
ActionAtomistic(ao),
ActionPilot(ao),
first(true),
second(true)
second(true),
print_masses(true),
print_charges(true)
{
vector<AtomNumber> atoms;
parse("FILE",file);
......@@ -137,12 +143,32 @@ DumpMassCharge::DumpMassCharge(const ActionOptions&ao):
}
}
bool only_masses = false;
parseFlag("ONLY_MASSES",only_masses);
if(only_masses) {
print_charges = false;
log.printf(" only masses will be written to file\n");
}
bool only_charges = false;
parseFlag("ONLY_CHARGES",only_charges);
if(only_charges) {
print_masses = false;
log.printf(" only charges will be written to file\n");
}
checkRead();
log.printf(" printing the following atoms:" );
for(unsigned i=0; i<atoms.size(); ++i) log.printf(" %d",atoms[i].serial() );
log.printf("\n");
requestAtoms(atoms);
if(only_masses && only_charges) {
plumed_merror("using both ONLY_MASSES and ONLY_CHARGES doesn't make sense");
}
}
void DumpMassCharge::prepare() {
......@@ -163,8 +189,8 @@ void DumpMassCharge::update() {
for(unsigned i=0; i<getNumberOfAtoms(); i++) {
int ii=getAbsoluteIndex(i).index();
of.printField("index",ii);
of.printField("mass",getMass(i));
of.printField("charge",getCharge(i));
if(print_masses) {of.printField("mass",getMass(i));}
if(print_charges) {of.printField("charge",getCharge(i));}
of.printField();
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment