ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StatWriter.cpp
Revision: 477
Committed: Tue Apr 8 14:34:30 2003 UTC (21 years, 3 months ago) by gezelter
File size: 1613 byte(s)
Log Message:
dt/2 fix in nvt

File Contents

# Content
1 #include <cstring>
2 #include <iostream>
3 #include <fstream>
4
5 #include "ReadWrite.hpp"
6 #include "simError.h"
7
8
9 StatWriter::StatWriter( SimInfo* the_entry_plug ){
10
11 entry_plug = the_entry_plug;
12
13 #ifdef IS_MPI
14 if(worldRank == 0 ){
15 #endif // is_mpi
16
17 strcpy( outName, entry_plug->statusName );
18
19 std::cerr << "Opening " << outName << " for stat\n";
20
21 outFile.open(outName, ios::out | ios::trunc );
22
23 if( !outFile ){
24
25 sprintf( painCave.errMsg,
26 "Could not open \"%s\" for stat output.\n",
27 outName);
28 painCave.isFatal = 1;
29 simError();
30 }
31
32 //outFile.setf( ios::scientific );
33 outFile << "#time(fs)\ttot_E\tpotential\tkinetic\ttemperature\tpressure\n";
34
35
36
37 #ifdef IS_MPI
38 }
39
40 sprintf( checkPointMsg,
41 "Sucessfully opened output file for stating.\n");
42 MPIcheckPoint();
43 #endif // is_mpi
44
45 tStats = new Thermo( entry_plug );
46 }
47
48 StatWriter::~StatWriter( ){
49
50 #ifdef IS_MPI
51 if(worldRank == 0 ){
52 #endif // is_mpi
53
54 outFile.close();
55 delete tStats;
56
57 #ifdef IS_MPI
58 }
59 #endif // is_mpi
60 }
61
62 void StatWriter::writeStat( double currentTime ){
63
64 double totE, potE, kinE, temp, press;
65
66 totE = tStats->getTotalE();
67 potE = tStats->getPotential();
68 kinE = tStats->getKinetic();
69 temp = tStats->getTemperature();
70 press = tStats->getPressure();
71
72 #ifdef IS_MPI
73 if(worldRank == 0 ){
74 #endif // is_mpi
75
76 outFile.precision(8);
77 outFile
78 << currentTime << "\t"
79 << totE << "\t"
80 << potE << "\t"
81 << kinE << "\t"
82 << temp << "\t"
83 << press << "\n";
84 outFile.flush();
85
86 #ifdef IS_MPI
87 }
88 #endif // is_mpi
89 }