예제 #1
0
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;
}
예제 #2
0
//------------------------------------------------------------------
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);
}
예제 #3
0
//------------------------------------------------------------------
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;
}