@@ -69,7 +69,7 @@ CCustomOutput::CCustomOutput( const diagnostic variable,
6969 _hist_max =10 ;
7070 _nBins =1 ; // Arbitrary default
7171
72- count =0 ;
72+ _count =0 ;
7373
7474 kk_only =kk;
7575
@@ -870,19 +870,14 @@ void CCustomOutput::WriteCustomOutput(const time_struct &tt,
870870 else if (_spaceAgg==BY_SELECT_HRUS){val=pModel->GetHRUGroup (kk_only)->GetHRU (k)->GetCumulFluxBet (_svind,_svind2);}
871871 }
872872
873- if (k==0 ){count ++;}// increment number of data items stored
873+ if (k==0 ){_count ++;}// increment number of data items stored
874874
875875 // ---Update diagnostics--------------------------------------------------
876876 // -----------------------------------------------------------------------
877877 if (_aggstat==AGG_AVERAGE)
878878 {
879- // \todo[funct] - should handle pointwise variables (e.g., state vars) differently from periodwise variables (e.g., forcings)
880- if (_var == VAR_STATE_VAR){
881- data[k][0 ]=(double )(count-1 )/(double )(count)*data[k][0 ]+val/count; // NOT CURRENTLY STRICTLY VALID
882- }
883- else {
884- data[k][0 ]=(double )(count-1 )/(double )(count)*data[k][0 ]+val/count;
885- }
879+ // incrementally adding to average - 1/N*((N-1)(old mean)+(val))
880+ data[k][0 ]=(double )(_count-1 )/(double )(_count)*data[k][0 ]+val/(double )(_count);
886881 }
887882 else if (_aggstat==AGG_MAXIMUM)
888883 {
@@ -907,7 +902,7 @@ void CCustomOutput::WriteCustomOutput(const time_struct &tt,
907902 (_aggstat==AGG_HISTOGRAM))
908903 {
909904 // populate data
910- data [k][count -1 ] = val;
905+ data [k][_count -1 ] = val;
911906 }
912907 else
913908 {
@@ -933,31 +928,31 @@ void CCustomOutput::WriteCustomOutput(const time_struct &tt,
933928 else if (_aggstat==AGG_MEDIAN)
934929 {
935930 double Q1,Q2,Q3;
936- quickSort (data[k],0 ,count -1 );
937- GetQuartiles (data[k],count ,Q1,Q2,Q3);
931+ quickSort (data[k],0 ,_count -1 );
932+ GetQuartiles (data[k],_count ,Q1,Q2,Q3);
938933 _CUSTOM<<FormatDouble (Q2)<<sep;
939934 }
940935 else if (_aggstat==AGG_QUARTILES) // find lower quartile, median, then upper quartile
941936 {
942937 double Q1,Q2,Q3;
943- quickSort (data[k],0 ,count -1 );
944- GetQuartiles (data[k],count ,Q1,Q2,Q3);
938+ quickSort (data[k],0 ,_count -1 );
939+ GetQuartiles (data[k],_count ,Q1,Q2,Q3);
945940 _CUSTOM<<FormatDouble (Q1)<<sep<<FormatDouble (Q2)<<sep<<FormatDouble (Q3)<<sep;
946941 }
947942 else if (_aggstat==AGG_95CI)
948943 {
949- quickSort (data[k],0 ,count -1 );// take floor and ceiling of lower and upper intervals to be conservative
950- _CUSTOM << FormatDouble (data[k][(int )floor ((double )(count -1 )*0.025 )])<<sep;
951- _CUSTOM << FormatDouble (data[k][(int )ceil ((double )(count -1 )*0.975 )])<<sep;
944+ quickSort (data[k],0 ,_count -1 );// take floor and ceiling of lower and upper intervals to be conservative
945+ _CUSTOM << FormatDouble (data[k][(int )floor ((double )(_count -1 )*0.025 )])<<sep;
946+ _CUSTOM << FormatDouble (data[k][(int )ceil ((double )(_count -1 )*0.975 )])<<sep;
952947 }
953948 else if (_aggstat==AGG_HISTOGRAM)
954949 {
955- quickSort (data[k],0 ,count -1 );
950+ quickSort (data[k],0 ,_count -1 );
956951 double binsize = (_hist_max-_hist_min)/_nBins;
957952 int bincount[MAX_HISTOGRAM_BINS];
958953
959954 for (int bin=0 ;bin<_nBins;bin++){ bincount[bin]=0 ; }
960- for (int a=0 ;a<count ;a++)
955+ for (int a=0 ;a<_count ;a++)
961956 {
962957 for (int bin=0 ;bin<_nBins;bin++){
963958 if ((data[k][a]>=(_hist_min+bin*binsize)) && (data[k][a]<(_hist_min+(bin+1 )*binsize))){ bincount[bin]++; }
@@ -982,8 +977,8 @@ void CCustomOutput::WriteCustomOutput(const time_struct &tt,
982977 else if (_aggstat==AGG_MEDIAN)
983978 {
984979 double Q1,Q2,Q3;
985- quickSort (data[k],0 ,count -1 );
986- GetQuartiles (data[k],count ,Q1,Q2,Q3);
980+ quickSort (data[k],0 ,_count -1 );
981+ GetQuartiles (data[k],_count ,Q1,Q2,Q3);
987982 out=Q2;
988983 }
989984 output[k]=out;
@@ -1011,7 +1006,7 @@ void CCustomOutput::WriteCustomOutput(const time_struct &tt,
10111006 }
10121007 }
10131008 // ...more stats here
1014- if (k==num_data-1 ){count =0 ;}// don't reboot count until last HRU/basin is done
1009+ if (k==num_data-1 ){_count =0 ;}// don't reboot count until last HRU/basin is done
10151010 }// end if (reset)
10161011 }// end for (k=0;...
10171012
@@ -1218,4 +1213,4 @@ CCustomOutput *CCustomOutput::ParseCustomOutputCommand(char *s[MAXINPUTITEMS], c
12181213 }
12191214
12201215 return pCustom;
1221- }
1216+ }
0 commit comments