ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StatWriter.cpp
Revision: 763
Committed: Mon Sep 15 16:52:02 2003 UTC (20 years, 9 months ago) by tim
File size: 1947 byte(s)
Log Message:
add conserved quantity to statWriter
fix bug of vector wrapping at NPTi

File Contents

# User Rev Content
1 mmeineke 723 #define _FILE_OFFSET_BITS 64
2    
3 mmeineke 377 #include <cstring>
4     #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 tim 763 outFile << "#time(fs)\ttot_E\tpotential\tkinetic\ttemperature\tpressure\tvolume\tenthalpy\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 gezelter 484 double totE, potE, kinE, temp, press, vol, enthalpy;
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     enthalpy = tStats->getEnthalpy();
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 << enthalpy << "\t"
91     << conservedQuantity << "\n";
92 gezelter 484
93 mmeineke 377 outFile.flush();
94    
95     #ifdef IS_MPI
96     }
97     #endif // is_mpi
98     }