ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-2.0/src/io/StatWriter.cpp
Revision: 1846
Committed: Sat Dec 4 00:01:32 2004 UTC (19 years, 7 months ago) by tim
File size: 1662 byte(s)
Log Message:
Dump2Xyz is also working, energy of NVE is not conserved

File Contents

# User Rev Content
1 gezelter 1490 #define _LARGEFILE_SOURCE64
2     #define _FILE_OFFSET_BITS 64
3    
4 tim 1721 #include "io/StatWriter.hpp"
5 tim 1492 #include "utils/simError.h"
6 gezelter 1490
7 tim 1808 namespace oopse {
8     StatWriter::StatWriter( const std::string& filename, const StatsBitSet& mask) : mask_(mask){
9 gezelter 1490
10     #ifdef IS_MPI
11     if(worldRank == 0 ){
12     #endif // is_mpi
13    
14 tim 1808 statfile_.open(filename.c_str(), std::ios::out | std::ios::trunc );
15 gezelter 1490
16 tim 1721 if( !statfile_ ){
17 gezelter 1490
18     sprintf( painCave.errMsg,
19 tim 1721 "Could not open \"%s\" for stat output.\n",
20     filename.c_str());
21 gezelter 1490 painCave.isFatal = 1;
22     simError();
23     }
24 tim 1846
25     writeTitle();
26 gezelter 1490
27     #ifdef IS_MPI
28     }
29    
30     sprintf( checkPointMsg,
31 tim 1721 "Sucessfully opened output file for stating.\n");
32 gezelter 1490 MPIcheckPoint();
33     #endif // is_mpi
34    
35     }
36    
37     StatWriter::~StatWriter( ){
38    
39     #ifdef IS_MPI
40     if(worldRank == 0 ){
41     #endif // is_mpi
42    
43 tim 1721 statfile_.close();
44 gezelter 1490
45     #ifdef IS_MPI
46     }
47     #endif // is_mpi
48     }
49    
50 tim 1721 void StatWriter::writeTitle() {
51 gezelter 1490
52    
53 tim 1721 #ifdef IS_MPI
54     if(worldRank == 0 ){
55     #endif // is_mpi
56 gezelter 1490
57 tim 1721 //write title
58 tim 1808 statfile_ << "#";
59     for (int i =0; i < mask_.size(); ++i) {
60     if (mask_[i]) {
61     statfile_ << "\t" << Stats::getTitle(i) << "(" << Stats::getUnits(i) << ")";
62 tim 1721 }
63 tim 1808 }
64 tim 1721 statfile_ << std::endl;
65    
66 gezelter 1490 #ifdef IS_MPI
67 tim 1721 }
68     #endif // is_mpi
69     }
70    
71 tim 1819 void StatWriter::writeStat(const Stats& s){
72 tim 1721
73     #ifdef IS_MPI
74     if(worldRank == 0 ){
75 gezelter 1490 #endif // is_mpi
76    
77 tim 1721 statfile_.precision(8);
78 gezelter 1490
79 tim 1721 for (int i =0; i < mask_.size(); ++i) {
80     if (mask_[i]) {
81 tim 1819 statfile_ << "\t" << s[i];
82 tim 1721 }
83     }
84     statfile_ << std::endl;
85 gezelter 1490
86 tim 1721 statfile_.flush();
87 gezelter 1490
88     #ifdef IS_MPI
89 tim 1721 }
90 gezelter 1490 #endif // is_mpi
91     }
92    
93 tim 1808 }