您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 新安江模型程序C++代码
新安江模型程序C++代码以下是类的声明:classXinanjiangModel{private://FORCINGdouble*m_pP;//降水数据double*m_pEm;//水面蒸发数据//longm_nSteps;//模型要运行的步长(一共m_nSteps步)longsteps;//OUTPUTdouble*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;//流域出口的总流量doublem_U;//for24h.U=A(km^2)/3.6/delta_t//SOILdouble*m_pW;//流域内土壤湿度double*m_pWu;//流域内上层土壤湿度double*m_pWl;//流域内下层土壤适度double*m_pWd;//流域内深层土壤湿度doublem_Wum;//流域内上层土壤蓄水容量doublem_Wlm;//流域内下层土壤蓄水容量doublem_Wdm;//流域内深层土壤蓄水容量,WDM=WM-WUM-WLM//EVAPORATIONdouble*m_pEu;//上层土壤蒸发量(毫米)double*m_pEl;//下层土壤蒸发量(毫米)double*m_pEd;//深层土壤蒸发量(毫米)//runoffdouble*RF;//PARAMETERdoublem_Kc;//流域蒸散发能力与实测蒸散发值的比doublem_IM;//不透水面积占全流域面积之比doublem_B;//蓄水容量曲线的方次,小流域(几平方公里)B0.1左右//中等面积(平方公里以内).2~0.3,较大面积.3~0.4doublem_WM;//流域平均蓄水容量(毫米)(WM=WUM+WLM+WDM)doublem_C;//流域内深层土壤蒸发系数,江南湿润地区:0.15-0.2,//华北半湿润地区:.09-0.12doublem_SM;//自由水蓄水容量doublem_EX;//自由水蓄水容量~面积分布曲线指数doublem_KG;//地下水日出流系数doublem_KI;//壤中流日出流系数doublem_CG;//地下水消退系数doublem_CI;//壤中流消退系数double*m_UH;//单元流域上地面径流的单位线doublem_WMM;//流域内最大蓄水容量doublem_Area;//流域面积intm_DeltaT;//每一步长的小时数intm_PD;//给定数据,用以判断是否时行河道汇流计算public:XinanjiangModel(void);~XinanjiangModel(void);//初始化模型voidInitModel(longnSteps,doubleArea,intDeltaT,intPD,char*ForcingFile);//设置模型参数voidSetParameters(double*Params);//运行新安江模型voidRunModel(void);//保存模拟结果到文件voidSaveResults(char*FileName);//记录出流数据,用以作图分析voidRunoff(char*runoff);private://进行汇流计算,将径流深度转换为流域出口的流量voidRouting(void);};以下是类的定义#includestdafx.h#includexinanjiangmodel.h#includeiostream#includefstream#includeiomanipusingnamespacestd;#includemath.h#includestdio.h#includeconio.hXinanjiangModel::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;delete[]this-m_pRs;delete[]this-m_pQ;delete[]this-m_pQrg;delete[]this-m_pQrs;delete[]this-m_pQri;}//初始化模型voidXinanjiangModel::InitModel(longnSteps,doubleArea,intDeltaT,intPD,char*ForcingFile){FILE*fp;inti;this-m_nSteps=nSteps;this-steps=this-m_nSteps+18;//驱动数据this-m_pP=newdouble[this-steps];this-m_pEm=newdouble[this-steps];//模型输出,蒸散发项this-m_pE=newdouble[this-steps];this-m_pEd=newdouble[this-steps];this-m_pEl=newdouble[this-steps];this-m_pEu=newdouble[this-steps];//模型输出,出流项,经过汇流的产流this-m_pQrg=newdouble[this-steps];this-m_pQrs=newdouble[this-steps];this-m_pQri=newdouble[this-steps];this-m_pQ=newdouble[this-steps];//模型输出,产流项this-m_pR=newdouble[this-steps];this-m_pRg=newdouble[this-steps];this-m_pRi=newdouble[this-steps];this-m_pRs=newdouble[this-steps];//模型状态量,土壤湿度this-m_pW=newdouble[this-steps];this-m_pWd=newdouble[this-steps];this-m_pWl=newdouble[this-steps];this-m_pWu=newdouble[this-steps];//runoff值this-RF=newdouble[this-steps];for(i=0;ithis-steps;i++){//驱动数据this-m_pP[i]=0.00;this-m_pEm[i]=0.00;//模型输出,蒸散发项this-m_pE[i]=0.00;this-m_pEd[i]=0.00;this-m_pEl[i]=0.00;this-m_pEu[i]=0.00;//模型输出,出流项,经过汇流的产流this-m_pQrg[i]=0.00;this-m_pQrs[i]=0.00;this-m_pQri[i]=0.00;this-m_pQ[i]=0.00;//模型输出,产流项this-m_pR[i]=0.00;this-m_pRg[i]=0.00;this-m_pRi[i]=0.00;this-m_pRs[i]=0.00;//模型状态量,土壤湿度this-m_pW[i]=0.00;this-m_pWd[i]=0.00;this-m_pWl[i]=0.00;this-m_pWu[i]=0.00;}this-m_Area=Area;this-m_DeltaT=DeltaT;this-m_PD=PD;this-m_U=this-m_Area/(3.6*this-m_DeltaT);//Forcing文件格式:第一列:降水(单位毫米)空格第二列水面蒸发(毫米)if((fp=fopen(ForcingFile,r))==NULL){printf(Cannotopenforcingfile!\n);return;}for(i=0;ithis-m_nSteps;i++){fscanf(fp,%lf%lf,&(this-m_pP[i]),&(this-m_pEm[i]));}fclose(fp);}//设置模型参数voidXinanjiangModel::SetParameters(double*Params){this-m_Kc=Params[0];//(1)流域蒸散发能力与实测水面蒸发之比this-m_IM=Params[1];//(2)流域不透水面积占全流域面积之比this-m_B=Params[2];//(3)蓄水容量曲线的方次this-m_Wum=Params[3];//(4)上层蓄水容量this-m_Wlm=Params[4];//(5)下层蓄水容量this-m_Wdm=Params[5];//(6)深层蓄水容量this-m_C=Params[6];//(7)深层蒸散发系数this-m_SM=Params[7];//(8)自由水蓄水容量this-m_EX=Params[8];//(9)自由水蓄水容量~面积分布曲线指数this-m_KG=Params[9];//(10)地下水日出流系数this-m_KI=Params[10];//(11)壤中流日出流系数this-m_CG=Params[11];//(12)地下水消退系数this-m_CI=Params[12];//(13)壤中流消退系数this-m_WM=this-m_Wum+this-m_Wlm+this-m_Wdm;this-m_WMM=this-m_WM*(1.0+this-m_B)/(1.0-this-m_IM);}//运行新安江模型voidXinanjiangModel::RunModel(void){longi;//模型的状态变量doublePE;//0时为净雨量;0为蒸发不足量(mm)doubleEp;//m_Kc*m_pEm[i]doubleP;doubleR;//产流深度,包括地表径流、壤中流和地下径流(mm)doubleRB;//不透水面上产生的径流深度(mm)doubleRG;//地下径流深度(mm)doubleRI;//壤中流深度(mm)doubleRS;//地表径流深(mm)doubleA;//土壤湿度为W时土壤含水量折算成的径流深度(mm)doub
本文标题:新安江模型程序C++代码
链接地址:https://www.777doc.com/doc-6164234 .html