ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/utils/ProgressBar.cpp
(Generate patch)

Comparing trunk/src/utils/ProgressBar.cpp (file contents):
Revision 1432 by chuckv, Thu Apr 8 19:49:38 2010 UTC vs.
Revision 1969 by gezelter, Wed Feb 26 14:14:50 2014 UTC

# Line 35 | Line 35
35   *                                                                      
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38 < * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
39 < * [4]  Vardeman, Stocker & Gezelter, in progress (2010).                        
38 > * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).          
39 > * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40 > * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
42  
42 #include <iostream>
43 #include <sys/ioctl.h>
43   #ifdef IS_MPI
44   #include <mpi.h>
45   #endif
46 +
47 + #include <iostream>
48 + #include <cstdlib>
49 +
50 + #ifdef _MSC_VER
51 + #include <Windows.h>
52 + #include <stdio.h>
53 + #include <io.h>
54 + #define isatty _isatty
55 + #define fileno _fileno
56 + #else
57 + #include <cstdio>
58 + #include <sys/ioctl.h>
59 + #include <unistd.h>
60 + #endif
61 +
62   #include "utils/ProgressBar.hpp"
63  
64   using namespace std;
# Line 57 | Line 72 | namespace OpenMD {
72    
73    void ProgressBar::clear() {
74   #ifdef IS_MPI
75 <    if (MPI::COMM_WORLD.Get_rank() == 0) {
75 >    int myRank;
76 >    MPI_Comm_rank( MPI_COMM_WORLD, &myRank);
77 >    if (myRank == 0) {
78   #endif
79        cout << endl;
80        cout.flush();
# Line 72 | Line 89 | namespace OpenMD {
89    
90    void ProgressBar::update() {
91  
75    int width;
76
92   #ifdef IS_MPI
93 <    if (MPI::COMM_WORLD.Get_rank() == 0) {
93 >    int myRank;
94 >    MPI_Comm_rank( MPI_COMM_WORLD, &myRank);
95 >    if (myRank == 0) {
96   #endif
97        
98        // only do the progress bar if we are actually running in a tty:
99        if (isatty(fileno(stdout))  && (getenv("SGE_TASK_ID")==NULL)) {    
100          // get the window width:
101 +
102 +        int width = 0;
103 + #ifdef _MSC_VER
104 +        CONSOLE_SCREEN_BUFFER_INFO csbi;
105 +        HANDLE hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
106 +        int ret = GetConsoleScreenBufferInfo(hConsole, &csbi);
107 +        if(ret) {
108 +          width = csbi.dwSize.X - 1;
109 +        }
110 + #else
111          struct winsize w;
112          ioctl(fileno(stdout), TIOCGWINSZ, &w);
113          width = w.ws_col;
114 + #endif
115  
116          // handle the case when the width is returned as a nonsensical value.
117          if (width <= 0) width = 80;
# Line 106 | Line 134 | namespace OpenMD {
134            
135            // compute the best estimate of the ending time:
136            time_t current_ = time(NULL);
137 <          time_t end_ = start_ + (current_ - start_) * (100.0/percent);
137 >          time_t end_ = static_cast<time_t>(start_ + (current_ - start_) *
138 >                                            (100.0/percent) );
139            struct tm * ender = localtime(&end_);
140            char buffer[22];
141            strftime(buffer, 22, "%a %b %d @ %I:%M %p", ender);
142 <          
142 >
143 > #ifdef _MSC_VER
144 >          csbi.dwCursorPosition.X = 0;
145 >          SetConsoleCursorPosition(hConsole, csbi.dwCursorPosition);
146 > #else          
147            cout << '\r';
148 + #endif
149            cout.width(3);
150            cout << right << int(percent);
151            cout.width(3);

Comparing trunk/src/utils/ProgressBar.cpp (property svn:keywords):
Revision 1432 by chuckv, Thu Apr 8 19:49:38 2010 UTC vs.
Revision 1969 by gezelter, Wed Feb 26 14:14:50 2014 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines