新安江模型程序C++代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新安江模型程序C++代码以下是类的声明:
class XinanjiangModel
{
private:
// FORCING
double *m_pP; // 降水数据
double *m_pEm; // 水面蒸发数据
//
long m_nSteps; // 模型要运行的步长(一共m_nSteps步) long steps;
// OUTPUT
double *m_pR; // 流域内每一步长的产流量(径流深度) double *m_pRs; // 每一步长的地表径流深(毫米)
double *m_pRi; // 每一步长的壤中流深(毫米)
double *m_pRg; // 每一步长的地下径流深(毫米)
double *m_pE; // 每一步长的蒸发(毫米)
double *m_pQrs; // 流域出口地表径流量
double *m_pQri; // 流域出口壤中流径流流量
double *m_pQrg; // 流域出口地下径流量
double *m_pQ; // 流域出口的总流量
double m_U; // for 24h. U=A(km^2)/3.6/delta_t
// SOIL
double *m_pW; // 流域内土壤湿度
double *m_pWu; // 流域内上层土壤湿度
double *m_pWl; // 流域内下层土壤适度
double *m_pWd; // 流域内深层土壤湿度
double m_Wum; // 流域内上层土壤蓄水容量
double m_Wlm; // 流域内下层土壤蓄水容量
double m_Wdm; // 流域内深层土壤蓄水容量,WDM=WM-WUM-WLM // EVAPORATION
double *m_pEu; // 上层土壤蒸发量(毫米)
double *m_pEl; // 下层土壤蒸发量(毫米)
double *m_pEd; // 深层土壤蒸发量(毫米)
//runoff
double *RF;
// PARAMETER
double m_Kc; // 流域蒸散发能力与实测蒸散发值的比
double m_IM; // 不透水面积占全流域面积之比
double m_B; // 蓄水容量曲线的方次,小流域(几平方公里)B0.1左右
// 中等面积(平方公里以内).2~0.3,较大面积.3~0.4 double m_WM; // 流域平均蓄水容量(毫米)(WM=WUM+WLM+WDM) double m_C; // 流域内深层土壤蒸发系数,江南湿润地区:0.15-0.2,
//华北半湿润地区:.09-0.12
double m_SM; //自由水蓄水容量
double m_EX; //自由水蓄水容量~面积分布曲线指数
double m_KG; //地下水日出流系数
double m_KI; //壤中流日出流系数
double m_CG; //地下水消退系数
double m_CI; //壤中流消退系数
double *m_UH; // 单元流域上地面径流的单位线
double m_WMM; // 流域内最大蓄水容量
double m_Area; // 流域面积
int m_DeltaT; // 每一步长的小时数
int m_PD; // 给定数据,用以判断是否时行河道汇流计算
public:
XinanjiangModel(void);
~XinanjiangModel(void);
// 初始化模型
void InitModel(long nSteps, double Area,int DeltaT, int PD, char *ForcingFile);
// 设置模型参数
void SetParameters(double *Params);
// 运行新安江模型
void RunModel(void);
// 保存模拟结果到文件
void SaveResults(char *FileName);
// 记录出流数据,用以作图分析
void Runoff(char *runoff);
private:
// 进行汇流计算,将径流深度转换为流域出口的流量
void Routing(void);
};
以下是类的定义
#include"stdafx.h"
#include"xinanjiangmodel.h"
#include
#include
#include
using namespace std;
#include"math.h"
#include"stdio.h"
#include"conio.h"
XinanjiangModel::XinanjiangModel(void)
{
this->m_pP = NULL;
this->m_pEm = NULL;
this->m_pE = NULL;
this->m_pEd = NULL;
this->m_pEl = NULL;
this->m_pEu = NULL;
this->m_pW = NULL;
this->m_pWd = NULL;
this->m_pWl = NULL;
this->m_pWu = NULL;
this->m_pR = NULL;
this->m_pRg = NULL;
this->m_pRi = NULL;
this->m_pRs = NULL;
this->m_pQ = NULL;
this->m_pQrg = NULL;
this->m_pQri = NULL;
this->m_pQrs = NULL;
}
XinanjiangModel::~XinanjiangModel(void) {
delete[] this->m_pP;
delete[] this->m_pEm;
delete[] this->m_pE;
delete[] this->m_pEd;
delete[] this->m_pEl;
delete[] this->m_pEu;
delete[] this->m_pW;
delete[] this->m_pWd;
delete[] this->m_pWl;
delete[] this->m_pWu;
delete[] this->m_pR;
delete[] this->m_pRg;
delete[] this->m_pRi;