Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

potentialenergyhist.cpp

Go to the documentation of this file.
00001 /***************************************************************************************************
00002 *****           Copyright (C) 2005  John Schneiderman <JohnMS@member.fsf.org>                  *****
00003 *****                                                                                          *****
00004 *****           This program is free software; you can redistribute it and/or modify           *****
00005 *****           it under the terms of the GNU General Public License as published by           *****
00006 *****           the Free Software Foundation; either version 2 of the License, or              *****
00007 *****           (at your option) any later version.                                            *****
00008 *****                                                                                          *****
00009 *****           This program is distributed in the hope that it will be useful,                *****
00010 *****           but WITHOUT ANY WARRANTY; without even the implied warranty of                 *****
00011 *****           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                  *****
00012 *****           GNU General Public License for more details.                                   *****
00013 *****                                                                                          *****
00014 *****           You should have received a copy of the GNU General Public License              *****
00015 *****           along with this program; if not, write to the Free Software                    *****
00016 *****           Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA     *****
00017 ***************************************************************************************************/
00018 #include "potentialenergyhist.h"
00019 #include "cluster.h"
00020 #include "configurationdatabase.h"
00021 
00022 #include <fstream>
00023 using std::ofstream;
00024 
00025 #include <iomanip>
00026 using std::ios;
00027 using std::scientific;
00028 using std::showpos;
00029 
00030 PotentialEnergyHistogram::PotentialEnergyHistogram(const ConfigurationDatabase &conf):BaseHistogram(conf.doubleValue("PotentialEnergyHistogram", "min"), conf.doubleValue("PotentialEnergyHistogram", "max"), conf.intValue("PotentialEnergyHistogram", "bins"))
00031 {
00032     m_pullingInterval=conf.intValue("PotentialEnergyHistogram", "pull");
00033 }
00034 
00035 void PotentialEnergyHistogram::acquire(const Cluster& cluster)
00036 {
00037     int n = int(cluster.size());
00038 
00039     double del = (m_max - m_min)/m_bins;
00040     ++m_numberHistogramsTaken;
00041 
00042     for(int i = 0; i < n ; ++i)
00043     {
00044         int nbin=((int)(( cluster[i].properties.potentialEnergy - m_min )/del));
00045         if(nbin < m_bins && nbin >= 0)
00046             m_histogramBin.at(nbin)++;
00047     }
00048     return;
00049 }
00050 
00051 void PotentialEnergyHistogram::write(int numAtoms, string base_name)
00052 {
00053     //  cout << "\n opening output file:\n";
00054     ofstream out((base_name+".peh").c_str());
00055     out.precision(Cluster::PRECISION);
00056     out.setf(ios::scientific);
00057     out.setf(ios::showpos);
00058 
00059     double del = (m_max - m_min)/m_bins;
00060     //  cout << "del = " << del << "\n";
00061 
00062     for(int i = 0; i < m_bins; ++i)
00063     {
00064         out << m_min + (i*del) + (del/2.) << " "
00065         << m_histogramBin[i]/(del*(double)(m_numberHistogramsTaken*numAtoms)) << "\n";
00066     }
00067 
00068     out.close();
00069 
00070     //  cout << "\n leaving writepotentialEnergyHistogram:\n";
00071     return;
00072 }

Generated on Tue Mar 28 23:28:03 2006 for ClusterSim by  doxygen 1.4.4