std::pair<double, std::string> Integration::gauss(unsigned int n) { std::vector<double> points; getGaussPoints(n, points); std::vector< std::vector<double> > gaussMatrix; makeMatrix(points, gaussMatrix); std::vector<double> c; calcCoeffs(gaussMatrix, c); std::pair<double, std::string> g = calcGauss(points, c); return g; }
//------------------------------------------------------------------ ReGen::ReGen (RAINPARAMETERS* p_RainP) { pP = p_RainP; theAnnualRain = 0.0; float days[days_in_year]; for (int d = 0; d < days_in_year; days[d] = d++); std::valarray <float> localDays (days, days_in_year); theDays.resize(days_in_year); theDays = localDays; rainProb.resize(days_in_year); meanRainVolume.resize(days_in_year); meanRainVolume = calcGauss(pP->vA, pP->vL, pP->vW, 4); rainyDay.resize(days_in_year); rainVolume.resize(days_in_year); }
//------------------------------------------------------------------ void ReGen::calcRain (void) { // calculate rainy days rainProb = calcGauss(pP->lA, pP->lL, pP->lW); rainyDay=0.0; for (int i = 0; i < days_in_year; i++) if (Zzo.rand_halfclosed01() < rainProb[i] && rainProb[i] > 0.05) rainyDay[i] = 1.0; // calculate rain volume on a specific day for (int i = 0; i < days_in_year; i++) rainVolume[i] = Zzo.rand_halfclosed01(); rainVolume *= -1.0; rainVolume += 1.0; rainVolume = -log(rainVolume); rainVolume *= meanRainVolume; rainVolume *= rainyDay; }