ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StatWriter.cpp
Revision: 1221
Committed: Wed Jun 2 14:56:18 2004 UTC (20 years, 3 months ago) by chrisfen
File size: 2269 byte(s)
Log Message:
Formatting Changes, removed writeRaw

File Contents

# User Rev Content
1 tim 1078 #define _LARGEFILE_SOURCE64
2 mmeineke 723 #define _FILE_OFFSET_BITS 64
3    
4 gezelter 829 #include <string.h>
5 mmeineke 377 #include <iostream>
6     #include <fstream>
7    
8     #include "ReadWrite.hpp"
9     #include "simError.h"
10    
11    
12     StatWriter::StatWriter( SimInfo* the_entry_plug ){
13    
14     entry_plug = the_entry_plug;
15    
16     #ifdef IS_MPI
17     if(worldRank == 0 ){
18     #endif // is_mpi
19    
20     strcpy( outName, entry_plug->statusName );
21 chrisfen 1180
22 gezelter 484 //std::cerr << "Opening " << outName << " for stat\n";
23 mmeineke 377
24     outFile.open(outName, ios::out | ios::trunc );
25    
26     if( !outFile ){
27    
28     sprintf( painCave.errMsg,
29     "Could not open \"%s\" for stat output.\n",
30     outName);
31     painCave.isFatal = 1;
32     simError();
33     }
34 chrisfen 1180
35 mmeineke 377 //outFile.setf( ios::scientific );
36 chrisfen 1221 outFile << "#time(fs)\tE_tot\tV\tKE\tT(K)\tP(atm)\tVol(A^3)\tH_conserved";
37    
38     if (entry_plug->useSolidThermInt || entry_plug->useLiquidThermInt)
39     outFile << "\tV_raw";
40 mmeineke 377
41 chrisfen 1221 if (entry_plug->useSolidThermInt)
42     outFile << "\tV_harm";
43 mmeineke 377
44 chrisfen 1221 outFile << "\n";
45 chrisfen 1212
46 chrisfen 1221
47 mmeineke 377 #ifdef IS_MPI
48     }
49    
50     sprintf( checkPointMsg,
51     "Sucessfully opened output file for stating.\n");
52     MPIcheckPoint();
53     #endif // is_mpi
54    
55     tStats = new Thermo( entry_plug );
56     }
57    
58     StatWriter::~StatWriter( ){
59    
60     #ifdef IS_MPI
61     if(worldRank == 0 ){
62     #endif // is_mpi
63    
64     outFile.close();
65     delete tStats;
66    
67     #ifdef IS_MPI
68     }
69     #endif // is_mpi
70     }
71    
72     void StatWriter::writeStat( double currentTime ){
73    
74 mmeineke 799 double totE, potE, kinE, temp, press, vol;
75 tim 763 double conservedQuantity;
76 mmeineke 377
77     totE = tStats->getTotalE();
78     potE = tStats->getPotential();
79     kinE = tStats->getKinetic();
80     temp = tStats->getTemperature();
81 gezelter 477 press = tStats->getPressure();
82 gezelter 484 vol = tStats->getVolume();
83 tim 763 conservedQuantity = entry_plug->the_integrator->getConservedQuantity();
84 chrisfen 1221
85 mmeineke 377 #ifdef IS_MPI
86     if(worldRank == 0 ){
87     #endif // is_mpi
88    
89     outFile.precision(8);
90     outFile
91     << currentTime << "\t"
92     << totE << "\t"
93     << potE << "\t"
94     << kinE << "\t"
95 gezelter 468 << temp << "\t"
96 gezelter 484 << press << "\t"
97     << vol << "\t"
98 chrisfen 1221 << conservedQuantity;
99 gezelter 484
100 chrisfen 1221 if (entry_plug->useSolidThermInt || entry_plug->useLiquidThermInt)
101     outFile << "\t" << entry_plug->vRaw;
102    
103     if (entry_plug->useSolidThermInt)
104     outFile << "\t" << entry_plug->vHarm;
105    
106     outFile << "\n";
107    
108 mmeineke 377 outFile.flush();
109    
110     #ifdef IS_MPI
111     }
112     #endif // is_mpi
113     }
114 chrisfen 1180