#include #include "global.h" double get_lambda(void) { int i; double retval; retval = 0.0; for(i=1; i misc.tch[params.nch - 1]){ misc.Ad[i] = 1.0; }else{ for(j=1; j misc.S[i][j]){ misc.ex[i][j] = misc.Suz[i][j] - misc.S[i][j]; misc.Suz[i][j] = misc.S[i][j]; } _qv = 0.0; if(misc.S[i][j] > 0.0){ _qv = (params.td > 0.0 ? misc.Suz[i][j] / (misc.S[i][j] * params.td) * input.dt : - params.td * params.K0 * exp(- misc.S[i][j] / params.m)); if(_qv > misc.Suz[i][j]) _qv = misc.Suz[i][j]; misc.Suz[i][j] -= _qv; if(misc.Suz[i][j] < ZERO) misc.Suz[i][j] = 0.0; _qv *= Aatb_r; } misc.qv[i][j] = _qv; misc.qv[i][misc.nidxclass] += misc.qv[i][j]; misc.Ea[i][j] = 0.0; if(input.Ep[i] > 0.0){ misc.Ea[i][j] = input.Ep[i] * (1 - misc.Srz[i][j] / params.Srmax); if(misc.Ea[i][j] > params.Srmax - misc.Srz[i][j]) misc.Ea[i][j] = params.Srmax - misc.Srz[i][j]; } misc.Srz[i][j] += misc.Ea[i][j]; _qo = 0.0; if(j > 0){ if(misc.ex[i][j] > 0.0) _qo = idxstats.Aatb_r[j] * (misc.ex[i][j-1] + misc.ex[i][j]) / 2.0; else if(misc.ex[i][j-1] > 0.0) _qo = Aatb_r * misc.ex[i][j-1] / (misc.ex[i][j-1] - misc.ex[i][j]) * misc.ex[i][j-1] / 2.0; } misc.qo[i][j] = _qo; misc.qo[i][misc.nidxclass] += misc.qo[i][j]; misc.qt[i][j] = misc.qo[i][j] + misc.qs[i]; } misc.qo[i][misc.nidxclass] += misc.fex[i]; misc.qt[i][misc.nidxclass] = misc.qo[i][misc.nidxclass] + misc.qs[i]; misc.S_mean[i] = misc.S_mean[i] + misc.qs[i] - misc.qv[i][misc.nidxclass]; if(i + 1 < input.ntimestep) misc.S_mean[i + 1] = misc.S_mean[i]; for(j=0; j input.ntimestep - 1) break; misc.Qt[k] += misc.qt[i][misc.nidxclass] * misc.Ad[j]; } } return; } /* Object function for hydrograph suggested by Servet and Dezetter(1991) */ double get_Em(void) { int i; double Em, numerator, denominator; misc.Qobs_mean = 0.0; numerator = 0.0; for(i=0; i