// 水利水能规划课设项目.cpp
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <iomanip>
#include <cmath>
const int NumSeries = 20;//泄洪插值系列原始值数目
double ZSeries[NumSeries], VSeries[NumSeries], qSeries[NumSeries];//插值原始系列值
double ZVqChaZhi(double x[NumSeries], double y[NumSeries], double x0)
{//Z、V、q两两插值函数( 注意:返回q为单孔泄流流量)
double y0 = -1;//返回为负值时,可以作为判定依据
for(int i = 0; i < NumSeries - 1; i++)
{
if(((x[i]>=x0)&&(x[i+1]<=x0))||((x[i]<=x0)&&(x[i+1]>=x0)))
y0 = y[i] + (y[i+1] - y[i])/(x[i+1] - x[i])*(x0 -x[i]);
}
return y0;
}
#include "确定水库死水位.h"
#include "设计洪水过程线.h"
#include "调洪计算.h"
#include "水能计算.h"
#include "由工作容量求保证电能.h"
void main()
{
using namespace std;
ifstream infile;
infile.open("infile_ZVqSeries.txt");
for(int i = 0; i < NumSeries; i++)//输入插值系列
infile>>ZSeries[i]>>VSeries[i]>>qSeries[i];
infile.close();
// YuNiV();//计算淤泥体积
WProcess();
TiaoHong();
// ChuLiJS();
// NandERelation();
}
//确定水库死水位.h
//由历年月流量资料求年均流量系列,及淤泥体积
const int StartYear = 1951,//
Y = 50;//历年逐月入库流量统计年数
double rho = 0.237,//多年平均含沙量(kg/m3)
m_down = 0.9,//泥沙沉积率
gamma = 1650,//泥沙干容重
p_empty = 0.3,//孔隙率
alpha = 0.15,//推移质与悬移质淤积量之比
MonthQ[Y][12],//历年逐月入库流量统计资料
AverageYearQ[Y] = {0},//历年逐月入库流量的全年平均
ZS,//死水位
YuNiVolume = 0;//设计运行年限淤泥累积体积,单位10^6(m3)
void YuNiV()
{
using namespace std;
ofstream outfile;
outfile.open("outfile_AverageYearQ.txt");
ifstream infile;
infile.open("infile_MonthQ.txt");
for(int i = 0; i < Y; i++)
{
outfile<<setw(10)<<i+StartYear;
for(int j = 0; j < 12; j++)
{
infile>>MonthQ[i][j];
YuNiVolume += MonthQ[i][j];
AverageYearQ[i] += MonthQ[i][j];
}
AverageYearQ[i] /= 12;
outfile<<setw(10)<<AverageYearQ[i]<<endl;
}
YuNiVolume *= ((1+alpha)*rho*2.63*m_down/(1-p_empty)/gamma);
cout<<"水库淤积体积为:"<<YuNiVolume<<endl;
}
//设计洪水过程线.h
//最小计时单位为3个小时,洪量单位统一(m3/s*3h)
//W—洪量,T—3小时,J—极值,C—Classical,SJ—设计
const int SumT = 52,//典型洪水时段数
J = 3,//同频率法选择的时段
NumJ[J] = {1, 8, 24},//同频率法选择的极值时段,
WProT = 24;//设计洪水过程线总历时,即NumJ[J - 1]
//NumJ[J]分别表示洪峰、最大一天、最大三天3个极值时段
//三种设计标准,即下游防洪标准洪水、水库设计标准洪水、校核标准洪水
double SJWPro[3][SumT],//设计洪水过程总历时由最长极值时段决定
//SJWPro[3][NumJ[J - 1]]不行
CTW[SumT],//典型洪水过程
MaxSJW[3][J],//极值洪量的设计值,3是指三种标准
MaxCW[J],//极值洪量的典型值
RatioW[J],//不同极值的同频率倍比
temp_W;//中间值
int date[J];//记录典型极值时段,判断是否为包含关系
void WProcess()
{
using namespace std;
ifstream infile;
infile.open("infile_ClassicalWProcess.txt");
for(int i = 0; i < SumT; i++)
infile>>CTW[i];
infile.close();
infile.open("infile_MaxSJW.txt");
for(int k = 0; k<J; k++)
for(int BZ = 0; BZ < 3; BZ++)
infile>>MaxSJW[BZ][k];
infile.close();
//人为判断典型洪水选取是否合理
cout<<"典型洪水极值:"<<endl;
for(int k = 0; k<J