ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StatWriter.cpp
Revision: 829
Committed: Tue Oct 28 16:03:37 2003 UTC (20 years, 8 months ago) by gezelter
File size: 1866 byte(s)
Log Message:
replace c++ header stuff with more portable c header stuff
Also, mod file fixes and portability changes
Some fortran changes will need to be reversed.

File Contents

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