diff --git a/src/analysis/Analysis.cpp b/src/analysis/Analysis.cpp index 648f3e1e2b2730b2bc8bd76ba2fb082615b6fb86..cedef3453d271668f34ca9199ff0da95cf0c226d 100644 --- a/src/analysis/Analysis.cpp +++ b/src/analysis/Analysis.cpp @@ -302,7 +302,7 @@ void Analysis::accumulate(){ // Write data to checkpoint file if( write_chq ){ rfile.rewind(); - data[idata]->print( rfile, getTime(), logweights[idata], old_norm ); + data[idata]->print( rfile, getTime(), logweights[idata], atoms.getUnits().getLength()/0.1, old_norm ); rfile.flush(); } // Increment data counter diff --git a/src/analysis/ClassicalMultiDimensionalScaling.cpp b/src/analysis/ClassicalMultiDimensionalScaling.cpp index 326be72535eed45f585fd963c18df778e49107b6..c3e280693ee054cb1c0e84c24798a2612baa31fd 100644 --- a/src/analysis/ClassicalMultiDimensionalScaling.cpp +++ b/src/analysis/ClassicalMultiDimensionalScaling.cpp @@ -239,7 +239,7 @@ void ClassicalMultiDimensionalScaling::analyzeLandmarks(){ if( efilename!="dont output"){ OFile afile; afile.link(*this); afile.setBackupString("analysis"); afile.open( efilename.c_str() ); - myembedding->print( "classical mds", getTime(), afile, getOutputFormat() ); + myembedding->print( "classical mds", getTime(), afile, getOutputFormat(), atoms.getUnits().getLength()/0.1 ); afile.close(); } } diff --git a/src/reference/PointWiseMapping.cpp b/src/reference/PointWiseMapping.cpp index 5bad59140701a88b00c559bb784463ff9317a502..d7cd3853866a284244c2c8ac4b71308a9b2d89e1 100644 --- a/src/reference/PointWiseMapping.cpp +++ b/src/reference/PointWiseMapping.cpp @@ -77,7 +77,8 @@ unsigned PointWiseMapping::getPropertyIndex( const std::string& name ) const { return 0; } -void PointWiseMapping::print( const std::string& method, const double & time, OFile& afile, const std::string& fmt ){ +void PointWiseMapping::print( const std::string& method, const double & time, OFile& afile, + const std::string& fmt, const double& lunits ){ std::string descr2, descr="DESCRIPTION: results from %s analysis performed at time " + fmt +"\n"; afile.printf(descr.c_str(), method.c_str(), time ); if(fmt.find("-")!=std::string::npos){ @@ -93,7 +94,7 @@ void PointWiseMapping::print( const std::string& method, const double & time, OF afile.printf(descr.c_str(), frames[i]->getWeight(), property[0].c_str(), low_dim[i][0] ); for(unsigned j=1;j<property.size();++j) afile.printf(descr2.c_str(), property[j].c_str(), low_dim[i][j]); afile.printf("\n"); - frames[i]->print( afile, fmt ); + frames[i]->print( afile, fmt, lunits ); } } diff --git a/src/reference/PointWiseMapping.h b/src/reference/PointWiseMapping.h index c6bf181c5e19cf1f7e54e28c9244ef05f63ece50..878acc54c6ff0ab45b30e5c2588f8364fcfd99aa 100644 --- a/src/reference/PointWiseMapping.h +++ b/src/reference/PointWiseMapping.h @@ -71,7 +71,8 @@ public: /// Get a pointer to the matrix of pairwise distances Matrix<double>& modifyDmat(); /// Print out the low dimensional mapping - void print( const std::string& method, const double & time, OFile& afile, const std::string& fmt ); + void print( const std::string& method, const double & time, OFile& afile, + const std::string& fmt, const double& lunits ); /// Get the low dimensional embedding coordinate double getProjectionCoordinate( const unsigned& iframe, const unsigned& jcoord ) const ; /// Set the value of the projection coordinate diff --git a/src/reference/ReferenceAtoms.cpp b/src/reference/ReferenceAtoms.cpp index db08ff75280d89a813c225bd18f586ff0f41a2a0..f958ac1d6017914fd6d588e8b564cf275639efb3 100644 --- a/src/reference/ReferenceAtoms.cpp +++ b/src/reference/ReferenceAtoms.cpp @@ -50,11 +50,11 @@ void ReferenceAtoms::setAtomNumbers( const std::vector<AtomNumber>& numbers ){ } } -void ReferenceAtoms::printAtoms( OFile& ofile ) const { +void ReferenceAtoms::printAtoms( OFile& ofile, const double& lunits ) const { for(unsigned i=0;i<reference_atoms.size();++i){ - ofile.printf("ATOM %4d X RES %4u %8.3f %8.3f %8.3f %6.2f %6.2f\n", + ofile.printf("ATOM %4d X RES %4u %8.3f%8.3f%8.3f%6.2f%6.2f\n", indices[i].serial(), i, - reference_atoms[i][0], reference_atoms[i][1], reference_atoms[i][2], + lunits*reference_atoms[i][0], lunits*reference_atoms[i][1], lunits*reference_atoms[i][2], align[i], displace[i] ); } } diff --git a/src/reference/ReferenceAtoms.h b/src/reference/ReferenceAtoms.h index 267c276a80ca2514f3cc732bc98864cebe5f60b0..08654483280ac63787e472fb0ade12a4412f8bf2 100644 --- a/src/reference/ReferenceAtoms.h +++ b/src/reference/ReferenceAtoms.h @@ -97,7 +97,7 @@ public: /// Set the positions of the reference atoms virtual void setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in )=0; /// Print the atomic positions - void printAtoms( OFile& ofile ) const ; + void printAtoms( OFile& ofile, const double& lunits ) const ; /// Return all atom indexes const std::vector<AtomNumber>& getAbsoluteIndexes(); /// This returns how many atoms there should be diff --git a/src/reference/ReferenceConfiguration.cpp b/src/reference/ReferenceConfiguration.cpp index aa00fc028a765689dd48c26785bfb178ae4f638e..2c8b8de56427546e87751fa5d499a7f78a248dfd 100644 --- a/src/reference/ReferenceConfiguration.cpp +++ b/src/reference/ReferenceConfiguration.cpp @@ -156,16 +156,16 @@ double ReferenceConfiguration::calculate( const std::vector<Vector>& pos, const // virialWasSet=ref->virialWasSet; virial=ref->virial; // } -void ReferenceConfiguration::print( OFile& ofile, const double& time, const double& weight, const double& old_norm ){ +void ReferenceConfiguration::print( OFile& ofile, const double& time, const double& weight, const double& lunits, const double& old_norm ){ ofile.printf("REMARK TIME=%f LOG_WEIGHT=%f OLD_NORM=%f\n",time, weight, old_norm ); - print( ofile, "%f" ); // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE + print( ofile, "%f", lunits ); // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE } -void ReferenceConfiguration::print( OFile& ofile, const std::string& fmt ){ +void ReferenceConfiguration::print( OFile& ofile, const std::string& fmt, const double& lunits ){ ReferenceArguments* args=dynamic_cast<ReferenceArguments*>(this); if(args) args->printArguments( ofile, fmt ); ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>(this); - if(atoms) atoms->printAtoms( ofile ); + if(atoms) atoms->printAtoms( ofile, lunits ); ofile.printf("END\n"); } diff --git a/src/reference/ReferenceConfiguration.h b/src/reference/ReferenceConfiguration.h index 7338830661af9345d30541557310011359829dd5..59abad474538c7040b3645e9ba46d381bba433ad 100644 --- a/src/reference/ReferenceConfiguration.h +++ b/src/reference/ReferenceConfiguration.h @@ -144,8 +144,8 @@ public: /// Set the reference structure (perhaps should also pass the pbc and align and displace ) void setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric ); /// Print a pdb file containing the reference configuration - void print( OFile& ofile, const double& time, const double& weight, const double& old_norm ); - void print( OFile& ofile, const std::string& fmt ); + void print( OFile& ofile, const double& time, const double& weight, const double& lunits, const double& old_norm ); + void print( OFile& ofile, const std::string& fmt, const double& lunits ); /// Get one of the referene arguments virtual double getReferenceArgument( const unsigned& i ) const { plumed_error(); return 0.0; } /// These are overwritten in ReferenceArguments and ReferenceAtoms but are required here