水利水能规划—水电站水库特征参数选择——C++程序

这是一个使用C++编程实现的水利水能规划项目,涉及水电站水库的调洪计算、设计洪水过程线、水能计算等。程序读取输入文件,通过插值函数计算泄流流量,并考虑了水库的安全泄流限制。此外,还包括了水库死水位的计算和设计洪水位的确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 水利水能规划课设项目.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值