Changeset 477 for library/bdm/base/loggers.cpp
- Timestamp:
- 08/05/09 14:40:03 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/base/loggers.cpp
r471 r477 8 8 #endif 9 9 10 namespace bdm {10 namespace bdm { 11 11 void memlog::itsave ( const char* fname ) { 12 12 it_file itf ( fname ); 13 13 int i; 14 string vec_name ="";14 string vec_name = ""; 15 15 int istart, iend; 16 for ( i =0; i<entries.length();i++ ) {17 istart =0;18 for ( int j=0; j<entries(i).length(); j++){ // same for as in add!!!19 vec_name = names (i) + entries(i).name(j);20 iend =istart+entries(i).size(j)-1;21 itf << Name ( vec_name ) << vectors ( i ).get_cols (istart,iend);16 for ( i = 0; i < entries.length(); i++ ) { 17 istart = 0; 18 for ( int j = 0; j < entries ( i ).length(); j++ ) { // same for as in add!!! 19 vec_name = names ( i ) + entries ( i ).name ( j ); 20 iend = istart + entries ( i ).size ( j ) - 1; 21 itf << Name ( vec_name ) << vectors ( i ).get_cols ( istart, iend ); 22 22 // move start after current end... 23 istart =iend+1;23 istart = iend + 1; 24 24 } 25 25 26 26 } 27 27 } 28 28 29 void memlog::from_setting( const Setting &set ) 30 { 29 void memlog::from_setting ( const Setting &set ) { 31 30 // TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK? 32 string itfilename = ( const char*)set["filename"];31 string itfilename = ( const char* ) set["filename"]; 33 32 maxlen = set["maxlen"]; 34 33 } 35 34 36 35 void dirfilelog::init() { 37 int i,j,k; 38 int nsc=0; 39 for ( i=0;i<entries.length();i++ ) {nsc+=entries ( i )._dsize();} 36 int i, j, k; 37 int nsc = 0; 38 for ( i = 0; i < entries.length(); i++ ) { 39 nsc += entries ( i )._dsize(); 40 } 40 41 ; //all entries!! 41 42 … … 51 52 scalarnames.set_length ( nsc ); 52 53 // For all entries 53 int ii =0;54 for ( i =0;i<entries.length();i++ ) { //for entries55 for ( j =0;j<entries ( i ).length();j++ ) { //for RVs in entries54 int ii = 0; 55 for ( i = 0; i < entries.length(); i++ ) { //for entries 56 for ( j = 0; j < entries ( i ).length(); j++ ) { //for RVs in entries 56 57 int rvsize = entries ( i ).size ( j ); 57 58 // for non-empty names 58 if (names(i).length()>0) {scalarnames(ii)=names(i) + "_";} 59 if ( names ( i ).length() > 0 ) { 60 scalarnames ( ii ) = names ( i ) + "_"; 61 } 59 62 // add name 60 63 scalarnames ( ii ) += entries ( i ).name ( j ); 61 64 // add number when needed 62 if ( rvsize > 1 ) {65 if ( rvsize > 1 ) { 63 66 // copy the same name for th whole RV 64 for ( k=1;k<rvsize;k++ ) {scalarnames(ii+k)=scalarnames(ii);} 67 for ( k = 1; k < rvsize; k++ ) { 68 scalarnames ( ii + k ) = scalarnames ( ii ); 69 } 65 70 // add numbers 66 for ( k =0;k<rvsize;k++ ) { //for all scalars in given RV67 sprintf ( num, "%d",k );68 scalarnames ( ii ) += ( std::string)"_" + num;71 for ( k = 0; k < rvsize; k++ ) { //for all scalars in given RV 72 sprintf ( num, "%d", k ); 73 scalarnames ( ii ) += ( std::string ) "_" + num; 69 74 ii++; 70 75 } 71 } 72 else {73 ii++;}76 } else { 77 ii++; 78 } 74 79 } 75 80 } 76 81 //Create format 77 string frm ="format";82 string frm = "format"; 78 83 get_fname ( filename, dirname, frm ); 79 84 80 85 FILE* fpf; 81 86 fpf = fopen ( filename, "w" ); 82 for ( i =0;i<ii;i++ ) {87 for ( i = 0; i < ii; i++ ) { 83 88 fprintf ( fpf, "%s RAW d 1\n", scalarnames ( i ).c_str() ); 84 89 } … … 94 99 void dirfilelog::write_buffers ( int Len ) { 95 100 int fp; 96 int nen =entries.length(); //all entries!!101 int nen = entries.length(); //all entries!! 97 102 double *Dt; 98 103 int DtRows; 99 int i, j,k;104 int i, j, k; 100 105 int ii; //index in scalarnames; 101 106 int jj; //index in vectors() 102 107 char filename[200]; 103 108 104 it_assert_debug ( Len <=maxlen,"diffilelog" );109 it_assert_debug ( Len <= maxlen, "diffilelog" ); 105 110 106 111 ii = 0; 107 for ( i =0;i<nen;i++ ) { //for entries112 for ( i = 0; i < nen; i++ ) { //for entries 108 113 Dt = vectors ( i )._data(); 109 114 DtRows = vectors ( i ).rows(); 110 115 111 jj =0;112 for ( j =0;j<entries ( i ).length();j++ ) { //for RVs in entries116 jj = 0; 117 for ( j = 0; j < entries ( i ).length(); j++ ) { //for RVs in entries 113 118 int rvsize = entries ( i ).size ( j ); 114 for ( k =0;k<rvsize;k++ ) { { //for all scalars in given RV115 get_fname ( filename, dirname,scalarnames ( ii ) );116 if ( Len ==0 ) //initialization119 for ( k = 0; k < rvsize; k++ ) { { //for all scalars in given RV 120 get_fname ( filename, dirname, scalarnames ( ii ) ); 121 if ( Len == 0 ) //initialization 117 122 fp = open ( filename, O_CREAT | O_WRONLY | O_TRUNC, 00644 ); 118 123 else 119 124 fp = open ( filename, O_CREAT | O_WRONLY | O_APPEND, 00644 ); 120 125 121 write ( fp, &Dt[jj* ( DtRows ) ], ( Len ) *sizeof ( double ) );126 write ( fp, &Dt[jj* ( DtRows ) ], ( Len ) *sizeof ( double ) ); 122 127 close ( fp ); 123 128 … … 134 139 void dirfilelog::step ( ) { 135 140 136 if ( ind == ( maxlen -1 ) ) {137 write_buffers ( ind +1 );141 if ( ind == ( maxlen - 1 ) ) { 142 write_buffers ( ind + 1 ); 138 143 ind = 0; 139 } 140 else 144 } else 141 145 ind++; 142 146 … … 144 148 145 149 void dirfilelog::finalize ( ) { 146 if ( ind >0 )150 if ( ind > 0 ) 147 151 write_buffers ( ind ); //assuming here that i+1 was not filled 148 152 } 149 153 150 154 151 void dirfilelog::from_setting( const Setting &set ) 152 { 155 void dirfilelog::from_setting ( const Setting &set ) { 153 156 // TODO tady se natvrdo ocekava existence stringu, nejsou zadne defaulty.. je to tak OK? 154 dirname = ( const char*)set["dirname"];157 dirname = ( const char* ) set["dirname"]; 155 158 maxlen = set["maxlen"]; 156 scalarnames.set_length (0);159 scalarnames.set_length ( 0 ); 157 160 } 158 161