00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "hydroclimate.h"
00016 #include "hydroparams.h"
00017 #include "hydrotimeser.h"
00018 #include "hydroinout.h"
00019
00020
00021
00022
00023 int hydroprinttable()
00024 {
00025
00026
00027
00028 int err, ii,p;
00029 double baseflowpercentage;
00030
00031 err = 0;
00032 baseflowpercentage = ((Qbartotal[ep] - baseflowtot[ep])/Qbartotal[ep]);
00033
00034
00035
00036
00037 fprintf( fidlog, " HydroPrintTable output: \n" );
00038 fprintf( fidlog, " -----------------------\n" );
00039 fprintf( fidlog, "\n" );
00040 fprintf( fidlog, " %s \n", title[ep] );
00041 fprintf( fidlog, " Epoch = %d, Year = %d \n", ep+1, yr );
00042
00043
00044 fprintf( fidlog, " Hypsometric Integral by Digitized Function: \n");
00045 fprintf( fidlog, "\t using %d number of points \n\n", nhypts[ep] );
00046
00047 fprintf( fidlog, " Total Suspended Load: \t %.1f (10^6 kg/year) \n", Qsannual/1e6 );
00048 fprintf( fidlog, " Total Bed Load: \t %.1f (10^6 kg/year) \n\n", Qbedannual/1e6 );
00049
00050 fprintf( fidlog, " Climate Trend and Basin Parameters: \n");
00051 fprintf( fidlog, " ----------------------------------- \n");
00052 fprintf( fidlog, "\t\t\t Annual Precipitation \t\t Annual Temperature \n");
00053 fprintf( fidlog, "\t Starting Value: \t %.3f (m) \t\t %.3f (degC) \n", Pstart[ep], Tstart[ep] );
00054 fprintf( fidlog, "\t Change per Year: \t %.3f (m/a) \t\t %.3f (degC/a) \n", Pchange[ep], Tchange[ep] );
00055 fprintf( fidlog, "\t Std. Deviation: \t %.3f (m) \t\t %.3f (degC) \n", Pstd[ep], Tstd[ep] );
00056 fprintf( fidlog, "\t This Year: \t\t %.3f (m) \t\t %.3f (degC) \n", Pannual, Tannual );
00057 fprintf( fidlog, "\t baseflow: \t\t %.3f (m) \n\n", baseflowtot[ep]*dTOs*daysiy );
00058
00059 fprintf( fidlog, "\t Max. Basin Altitude: \t %.1f (m) \n", maxalt[ep] );
00060 fprintf( fidlog, "\t ELA Starting Value: \t %.1f (m) \n", ELAstart[ep] );
00061 fprintf( fidlog, "\t ELA Change per Year: \t %.4f (m/a) \n", ELAchange[ep] );
00062 fprintf( fidlog, "\t ELA this Year: \t %.1f (m) \n\n", ela );
00063
00064 fprintf( fidlog, "\t Total Basin Area: \t\t %.1f (km^2) \n", totalarea[ep]/1e6 );
00065 fprintf( fidlog, "\t Glaciated Area above the ELA: \t %.1f (km^2) \n", smallg/1e6 );
00066 fprintf( fidlog, "\t Glaciated Area below the ELA: \t %.1f (km^2) \n\n", bigg/1e6 );
00067
00068 fprintf( fidlog, " Mass Balance Summary: \n");
00069 fprintf( fidlog, " --------------------- \n");
00070 fprintf( fidlog," Minput = Pannual + gwlast + previousice + previousnival + MQprevious \n" );
00071 fprintf( fidlog," \t Minput \t = \t\t\t %e (m^3) \n", Minput );
00072 fprintf( fidlog," \t Pannual \t = %e (m) \t %e (m^3)\n", Pannual, Pannual*totalarea[ep] );
00073 fprintf( fidlog," \t gwlast \t = \t\t\t %e (m^3) \n", gwlast );
00074 fprintf( fidlog," \t Gmass \t\t = \t\t\t %e (m^3) \n", Gmass );
00075 fprintf( fidlog," \t Msnowstart \t = \t\t\t %e (m^3) \n", Msnowstart );
00076 fprintf( fidlog," \t MQprevious \t = \t\t\t %e (m^3) \n\n", MQprevious );
00077
00078
00079 fprintf( fidlog," Moutput = MEtotal + Qtotal + gwstore + nextice + nextnival + MQnext \n" );
00080 fprintf( fidlog," \t Moutput \t = \t %e (m^3) \n", Moutput );
00081 fprintf( fidlog," \t MEtotal \t = \t %e (m^3)\n", MEtotal );
00082 fprintf( fidlog," \t Qtotal \t = \t %e (m^3) \n", Qgrandtotal[ep]);
00083 fprintf( fidlog," \t gwstore[daysiy-1] = \t %e (m^3) \n", gwstore[daysiy-1] );
00084 fprintf( fidlog," \t Msnowend \t = \t %e (m^3) \n", Msnowend );
00085 fprintf( fidlog," \t MQnext \t = \t %e (m^3) \n\n", MQnext );
00086
00087
00088
00089
00090 if (yr == tblstart[ep]) {
00091 fprintf( fidq, "%%\n%%================================================================\n" );
00092 fprintf( fidq, "%%Epoch = %d, Year = %d \n%%\n", ep+1, yr );
00093
00094 fprintf( fidq, "%%Daily Discharge Results: \n");
00095 fprintf( fidq, "%%------------------------ \n");
00096 if( exceedflood > 0 ) {
00097 fprintf( fidq, "%%********* NOTE: Some peak flows are exceeding the \t\t ********* \n");
00098 fprintf( fidq, "%%********* Maximum Basin Flood Flow Rate of %.1f (m^3/s) \t ********* \n%%\n", maxflood );
00099 }
00100
00101 fprintf( fidq, "%%All discharges in m^3/s \n%%\n");
00102
00103 fprintf( fidq, "%%Daily baseflow = %.1f \n%%\n", baseflowtot[ep] );
00104
00105 fprintf( fidq, "%%Day \t Qrain \t\t Qnival\t\t Qice \t\t Qss \t\t Qexceedgw \t\t gwstore \t Qtotal \t");
00106 if (outletmodelflag == 1)
00107 for (p=0; p < maxnoutlet; p++)
00108 fprintf( fidq, "Qoutlet:%d\t",p+1);
00109 fprintf( fidq, "\n");
00110 fprintf( fidq, "%%--- \t ----- \t\t ------\t\t ---- \t\t --- \t\t --------- \t\t -------- \t---------\t ");
00111 for (p=0; p < maxnoutlet; p++)
00112 fprintf( fidq, "---------\t");
00113 fprintf( fidq, "\n%%\n");
00114 }
00115 for( ii=0; ii<daysiy; ii++ ) {
00116 fprintf( fidq, "%d \t %.1f \t %.1f \t %.1f \t %.1f \t %.1f \t\t\t %.1f\t %.2f\t\t ", \
00117 (yr - syear[ep])*365 + ii+1, baseflowpercentage*Qrain[ii], baseflowpercentage*Qnival[ii], baseflowpercentage*Qice[ii],
00118 baseflowpercentage*Qss[ii], baseflowpercentage*Qexceedgw[ii], gwstore[ii],Qsumtot[ii] );
00119 for (p=0; p < maxnoutlet; p++)
00120 fprintf( fidq, "%.2f \t\t",Qsum[ii][p] );
00121 fprintf( fidq, "\n");
00122 }
00123
00124
00125
00126
00127 if (yr == tblstart[ep]) {
00128 fprintf( fidqs, "%%\n%%================================================================\n" );
00129 fprintf( fidqs, "%%Epoch = %d, Year = %d \n%%\n", ep+1, yr );
00130
00131 fprintf( fidqs, "%%Daily Sediment Load Results: \n");
00132 fprintf( fidqs, "%%------------------------ \n");
00133
00134 fprintf( fidqs, "%%\n%%Day\tQtotal\t");
00135 if (outletmodelflag == 1)
00136 for (p=0; p < maxnoutlet; p++)
00137 fprintf( fidqs, "Qoutl:%d\t",p+1);
00138 fprintf( fidqs, "Cstotal\t\t" );
00139 if (outletmodelflag == 1)
00140 for (p=0; p < maxnoutlet; p++)
00141 fprintf( fidqs, "Csoutl:%d\t",p+1);
00142 fprintf( fidqs, "Log(Qstot\t" );
00143 if (outletmodelflag == 1)
00144 for (p=0; p < maxnoutlet; p++)
00145 fprintf( fidqs, "Log(Qsoutl:%d)\t",p+1);
00146 fprintf( fidqs, "Bedloadtot\t" );
00147 if (outletmodelflag == 1)
00148 for (p=0; p < maxnoutlet; p++)
00149 fprintf( fidqs, "Bedloadoutl:%d\t",p+1);
00150 fprintf( fidqs, "\n");
00151
00152 fprintf( fidqs, "%% \t(m^3/s) ");
00153 if (outletmodelflag == 1)
00154 for (p=0; p < maxnoutlet; p++)
00155 fprintf( fidqs, "(m^3/s) ");
00156 fprintf( fidqs, "(kg/m^3) \t" );
00157 if (outletmodelflag == 1)
00158 for (p=0; p < maxnoutlet; p++)
00159 fprintf( fidqs, "(kg/m^3) \t");
00160 fprintf( fidqs, "(kg/s) \t\t\t" );
00161 if (outletmodelflag == 1)
00162 for (p=0; p < maxnoutlet; p++)
00163 fprintf( fidqs, "(kg/s) \t\t\t");
00164 fprintf( fidqs, "(kg/s) \t\t\t" );
00165 if (outletmodelflag == 1)
00166 for (p=0; p < maxnoutlet; p++)
00167 fprintf( fidqs, "(kg/s) \t\t\t");
00168 fprintf( fidqs, "\n");
00169
00170 fprintf( fidqs, "%%--- \t------- ");
00171 if (outletmodelflag == 1)
00172 for (p=0; p < maxnoutlet; p++)
00173 fprintf( fidqs, "------- ");
00174 fprintf( fidqs, "-------- \t");
00175 if (outletmodelflag == 1)
00176 for (p=0; p < maxnoutlet; p++)
00177 fprintf( fidqs, "-------- \t");
00178 fprintf( fidqs, "------ \t\t\t");
00179 if (outletmodelflag == 1)
00180 for (p=0; p < maxnoutlet; p++)
00181 fprintf( fidqs, "------ \t\t\t");
00182 fprintf( fidqs, "-------- \t\t");
00183 if (outletmodelflag == 1)
00184 for (p=0; p < maxnoutlet; p++)
00185 fprintf( fidqs, "-------- \t\t");
00186 fprintf( fidqs, "\n%%\n");
00187 }
00188
00189 for( ii=0; ii<daysiy; ii++ ) {
00190 fprintf( fidqs, "%d \t%.2f ",(yr - syear[ep])*365 + ii+1,Qsumtot[ii]);
00191 if (outletmodelflag == 1)
00192 for (p=0; p < maxnoutlet; p++)
00193 fprintf( fidqs, "%.2f ",Qsum[ii][p]);
00194 fprintf( fidqs, "%.4f \t\t",Cs[ii]);
00195 if(outletmodelflag == 1)
00196 for (p=0; p < maxnoutlet; p++)
00197 fprintf( fidqs, "%.4f \t",Csoutlet[ii][p]);
00198 fprintf( fidqs, "%.1f \t",log(Qs[ii]));
00199 if (outletmodelflag == 1)
00200 for (p=0; p < maxnoutlet; p++)
00201 fprintf( fidqs, "%.1f \t",log(Qsoutlet[ii][p]));
00202 fprintf( fidqs, "%.1f \t",Qb[ii]);
00203 if (outletmodelflag == 1)
00204 for (p=0; p < maxnoutlet; p++)
00205 fprintf( fidqs, "%.1f \t",Qboutlet[ii][p]);
00206 fprintf( fidqs, "\n");
00207 }
00208
00209 return(err);
00210 }
00211