ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StatWriter.cpp
Revision: 1078
Committed: Tue Mar 2 20:32:40 2004 UTC (20 years, 4 months ago) by tim
File size: 1894 byte(s)
Log Message:
add LARGEFILE_SOURCE64 macro to support large file

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    
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    
35     //outFile.setf( ios::scientific );
36 mmeineke 799 outFile << "#time(fs)\ttot_E\tpotential\tkinetic\ttemperature\tpressure\tvolume\tconserved quantity\n";
37 mmeineke 377
38    
39    
40     #ifdef IS_MPI
41     }
42    
43     sprintf( checkPointMsg,
44     "Sucessfully opened output file for stating.\n");
45     MPIcheckPoint();
46     #endif // is_mpi
47    
48     tStats = new Thermo( entry_plug );
49     }
50    
51     StatWriter::~StatWriter( ){
52    
53     #ifdef IS_MPI
54     if(worldRank == 0 ){
55     #endif // is_mpi
56    
57     outFile.close();
58     delete tStats;
59    
60     #ifdef IS_MPI
61     }
62     #endif // is_mpi
63     }
64    
65     void StatWriter::writeStat( double currentTime ){
66    
67 mmeineke 799 double totE, potE, kinE, temp, press, vol;
68 tim 763 double conservedQuantity;
69 mmeineke 377
70     totE = tStats->getTotalE();
71     potE = tStats->getPotential();
72     kinE = tStats->getKinetic();
73     temp = tStats->getTemperature();
74 gezelter 477 press = tStats->getPressure();
75 gezelter 484 vol = tStats->getVolume();
76 tim 763 conservedQuantity = entry_plug->the_integrator->getConservedQuantity();
77 mmeineke 377 #ifdef IS_MPI
78     if(worldRank == 0 ){
79     #endif // is_mpi
80    
81     outFile.precision(8);
82     outFile
83     << currentTime << "\t"
84     << totE << "\t"
85     << potE << "\t"
86     << kinE << "\t"
87 gezelter 468 << temp << "\t"
88 gezelter 484 << press << "\t"
89     << vol << "\t"
90 tim 763 << conservedQuantity << "\n";
91 gezelter 484
92 mmeineke 377 outFile.flush();
93    
94     #ifdef IS_MPI
95     }
96     #endif // is_mpi
97     }