The water modeling,a brief history of time
abstract:
One waterhole,like a water,like water clock,like
black holes,will swallow me,could be another world,for
myself,haha,and for you or not for you.
题记:
一个水洞,像一滴水,像水时钟,像黑洞,会吞没我,成为另一个世界,为我自己,哈哈,也为你或者不为你。
keywords: waterhole,digitwater,LSModel,理水诣
!
!
!
!
WYH_Mod.F90为舞阳河项目增加 20081026 1:19
!
变量、常数和数组封装模块
module
WYH_Mod
implicit none
!
!
!
因某源水调度项目增加,但无必然关系 20110120
character(len=201) :: Filename104 ! 测站关系信息表
!
输入文件名,...\GN_SM_SUB\104ST_STRL_B.CSV ! 20110214
21:35
character(len=201) :: Filename137 ! 水厂及取水口信息表
!
输入文件名,...\GN_SM_SUB\137ST_WFCT_B.CSV ! 20110209
22:21
character(len=201) :: Filename206 ! 水库水情表
!
输入文件名,...\GN_SM_SUB\206ST_RSVR_R.CSV ! 20110121
15:42
character(len=201) :: Filename207 ! 堰闸水情表
!
输入文件名,...\GN_SM_SUB\207ST_WASG_R.CSV ! 20110121
15:41
!character(len=201) :: Filename208 ! 闸门启闭情况表
!
输入文件名,...\GN_SM_SUB\208ST_GATE_R.CSV ! 20110120
9:50
character(len=201) :: Filename209 ! 泵站水情表 ! 踏遍莲花少一人 20110121
!
输入文件名,...\GN_SM_SUB\209ST_PUMP_R.CSV
character(len=201) :: Filename304 ! 堰闸水情预报表 20110120 13:39
! 输出文件名,...\GN_FD_SUB\304ST_WAS_F.CSV
character(len=201) :: Filename305 ! 闸门启闭情况预报表 20110121 13:42
! 输出文件名,...\GN_FD_SUB\305ST_GATE_F.CSV
character(len=201) :: Filename313 ! 泵站水情预报表(未输出) 20110121
14:30
! 输出文件名,...\GN_FD_SUB\305ST_PUMP_F.CSV
!
!character(len=2),allocatable :: PDCHCD(:,:) !
表209中的引排特征码,1引水,0或O排水;:,: M_JH,NT ! 20110121 11:01
!
调节点指定流量也存储在CHLEN(:) 20110125 12:32
!
integer ::
M_DP ! 节点图中的泵站总数 ! 20110123 22:16
integer ::
M_DD ! 节点图中的堰闸总数 ! 20110123 23:11
integer ::
iDP,iDD ! 泵站、堰闸节点序号 20110125 15:07
integer,allocatable :: ID_DP(:) ! 泵站节点ID号;: M_DP ! 2110125
15:33
integer,allocatable :: IDPhash(:) ! 泵站哈稀数;: N_ND
integer,allocatable :: ID_DD(:) ! 堰闸节点ID号;: M_DD ! 未用
20110125
integer,allocatable :: IDDhash(:) ! 泵站哈稀数;: N_ND
integer ::
jND,jJH,jDP,jNR ! 节点序号,与iND,iJH等区别 20110125 15:45
integer,allocatable :: L_DP(:) ! 泵站优先级;: M_DP ! 2110125 16:07
!
泵站运行优先级代码,1优先级1,2优先级2,3优先级3,,,0无优先级,针对局部工程,实为就近工程优先 20101125
11:33
! 泵站优先级首先存储在CHLEN(:) 20110125 12:24
integer ::
L_DPmax ! 泵站最大优先级数 20110125 16:03
integer ::
iTJ,M_TJ ! 调节点序号,调节点总数 20110125 18:01
integer,allocatable :: ID_TJ(:) ! 调节节点ID号;: M_TJ ! 2110125
18:08
integer,allocatable :: ITJhash(:) ! 调节点哈稀数;: N_ND
real,allocatable :: Q_TJ(:) ! 调节点指定流量;: M_TJ ! 20100125 17:05
!
real,allocatable :: PMPQ(:) !
抽水流量;: M_DP ! 20110207 15:29
real,allocatable :: PMCL(:) !
抽水含氯度;: M_DP ! 20110207 16:01
! 注销以下3行 20110216 0:16
!real,allocatable ::
PPUPZ(:),PPDWZ(:) ! 泵站上游、下游控制水位(不变);: M_DP ! 20110203 14:50
!character(len=2),allocatable
:: PDCHCD(:) ! 表209中的引排特征码(不变),1引水,0或O排水;:,: M_DP ! 20110207
13:55
!integer,allocatable ::
IPRCD(:) ! 泵站控制水库编码;: M_DP ! 2110213 1:38
!
! 表130 泵站(水库电站、径流水电站)发电用 20110126 10:29
integer :: iTP ! 类型,程序中有3类:1水库电站,2泵站,3径流电站
20110126 11:46
integer
:: mTP ! 站数
integer
:: nMGN ! 机组号数 20110126 12:26
integer,allocatable
:: M_TP(:) ! 分类站数;: iTP 20110126
18:49
integer,allocatable
:: M_MGN(:,:)
! 机组号数,一个机组号对应表130的一行数据;:,: iTP,mTP 20110126 11:41
real,allocatable
:: PTDSQ(:,:) ! 机组总设计流量;:,: iTP,mTP 20110126 13:05
integer,allocatable
:: PMCHCNT(:,:,:) ! (泵站)装机台数;:,:,: iTP,mTP,nMGN
real,allocatable
:: PSGRTPWR(:,:,:) ! 单机额定功率;:,:,: iTP,mTP,nMGN
real,allocatable
:: PSGDSQ(:,:,:) ! 单机设计流量;:,:,: iTP,mTP,nMGN
!
表130 原为水库发电用,可兼容;老的程序应修改 20110126 11:11
integer
:: M_PS ! 节点图中的径流式水电站总数;也隐含在M_TP数组中;暂无 ! 20110126 12:05
!
! 表131 堰闸补充 20110214
22:37
real,allocatable :: SWDSQ(:) !
水库堰闸单孔设计流量;: M_NR
real,allocatable :: TWDSQ(:) !
水库堰闸总设计流量;: M_NR
integer :: M_DD !
节点图中的堰闸总数(水库隐含的堰闸不在此中) ! 20110123 23:11
integer,allocatable :: ID_DD(:)
! 堰闸节点ID号;: M_DD ! 未用 20110125
integer,allocatable ::
IDDhash(:) ! 水闸哈稀数;: N_ND
character(len=20),allocatable
:: DGTTP(:) ! 闸门型式;: M_DD 20110215 18:21
real,allocatable :: DWRCREL(:)
! 堰顶高程;: M_DD
integer,allocatable ::
DTGTNUM(:) ! 总孔数;: M_DD
real,allocatable :: DSGWD(:) !
单孔宽;: M_DD
real,allocatable :: DAVGTWD(:)
! 平均孔宽;: M_DD
real,allocatable :: DTGTWD(:) !
总孔宽;: M_DD
real,allocatable :: DGTHD(:) !
闸门高度;: M_DD
real,allocatable :: DSWDSQ(:) !
水库堰闸单孔设计流量;: M_DD
real,allocatable :: DTWDSQ(:) !
水库堰闸总设计流量;: M_DD
!
! 表104 测站关系及起调水位 20110215
14:22
integer :: iRL,M_RL !
关系站序号;关系站总数,最多为泵站,水闸及用水户的总和 20110215 14:38
integer,allocatable :: RSTCD(:)
! 关系站编码;:,: M_WU ! 20110215 19:11
character(len=2),allocatable ::
RLMRK(:) ! 关系标志;:,: M_WU ! 20110215 13:55
integer,allocatable ::
UPSTCD(:),DWSTCD(:) ! 上游关联站码,下游关联站码;: M_WU
real,allocatable ::
UPBGZ(:),DWBGZ(:) ! 上游起调水位,下游起调水位;: M_WU
!
real dQ38 ! 调整节点流量与其指定流量的差值 20110128 22:43
real dW38 !
调整用水户缺水流量 20110128 23:12
!
以下实施比较繁,当下无需采用(根据:水洞收缩原理) 20110130 18:13
!integer ::
M_ZF,iZF ! 节点图中的分流节点 ! 20110129 3:56
!integer,allocatable :: M_ZFO(:) ! 分流节点相邻的分流河段数;: M_ZF ! 20110130
11:58
!integer,allocatable :: M_ZFI(:) ! 分流节点相邻的入流河段数;: M_ZF
!integer,allocatable :: ID_ZFO(:,:) ! 分流河段ID号;:,:
M_ZF,M_NJLmax
!integer,allocatable :: ID_ZFI(:,:) ! 入流河段ID号;:,:
M_ZF,M_NJLmax
!real,allocatable :: QO_ZFO(:) ! 总分流;: M_ZF
!real,allocatable :: QI_ZFI(:) ! 总入流;: M_ZF
!real,allocatable :: F_ZFO(:,:) ! 分流比;: M_ZF,M_ZFO(:) 20110130
12:38
!integer,allocatable :: IZFhash(:) ! 分流点哈稀数;: N_ND 20110130
15:23
!integer,allocatable :: ID_ZF(:) ! 分流点ID号;: M_ZF
!
! 表137
水厂(用水户)及取水口信息(隐含泵站) 20110210 10:41
integer,allocatable :: LSTN(:) ! 相邻取水口数(以测站编码统计,无序);: M_WU
integer,allocatable :: WTTP(:) ! 取水类型;: M_WU
! 1按相邻节点顺序取水以满足所需(省缺值),2按设计流量比例分配以满足所需,
! 3先河水后库水且按相邻节点顺序,4先河水后库水且库容大者优先
real,allocatable :: CAPACITY(:) ! 日生产能力(万m3/d);: M_WU ! 20110210
11:36
!
integer ::
LSSTNmax ! 最大相关取水口数 ! 20110210 18:04
integer ::
LSNDNmax ! 最大相邻取水节点数 ! 20110210 20:53
integer,allocatable :: LSCD(:) ! 临时相关取水口编码;:
LSTN(iWU)<=LSSTNmax
real,allocatable :: LDNQ(:) ! 临时相关取水口设计流量;: LSTN(iWU) ! 20110210
22:50
integer,allocatable :: LSTCD(:,:) ! 相关取水口编码;:,:
M_WU,LSTN(iWU)
real,allocatable :: LDSNQ(:,:)
! 相关取水口设计流量(m3/s,按表137相关取水口编码顺序);:,:
M_WU,LSTN(iWU) ! 20110210 12:10
!
real,allocatable :: QDSN(:,:)
! 取水节点设计流量(m3/s,按表333相邻取水节点ID号顺序);:,:
M_WU,LNDN(iND) ! 20110210 16:14
! QDSN(:,:)的iND与LDSNQ(:,:)的iWU相匹配(即为同一节点)
20110210 18:57
!real,allocatable :: QWR(:) ! 需水量(隐含泵站抽水流量);: M_WU 20110208 15:32
不可用,与警戒水位流量重名
real,allocatable :: QWUR(:,:) ! 需水流量(隐含泵站抽水流量);:,: M_WU,LNDN(iND)
20110210 14:42
! 规定退水点唯一,最后一个相关节点表示的需水量即为总需水量20110208
16:22
! QWUR(:,:)与QDSN(:,:)相对应,QWUR为实时所需,QDSN为设计值
20110210 15:56
end
module
!
!
!
!
GNread333.F90 20080602 22:00
! 读入数据
subroutine
GNread333 ! 20080602
use MSK_Mod
use GN_Mod
use WYH_Mod ! 20081028 10:49
use GT_Mod ! 20090419 21:38
implicit none
!
!
!
if(STTP(iND).eq.'DP') then ! 为珠海新增 泵站取水点 20110125 19:12
JH_TYPE(iJH) = 13 ! 泵站与用水户性质相近,共用一个数值 20110130
23:26
BJ_type(iJH) = 1 ! 所有泵站均为边界,或直接或间接 20110130
23:27
!JH_TYPE(iJH) = 14 ! 未用
!!BJ_type(iJH) = 1 ! 暂时做不到直接为边界 20110124 1:30 可以了
20110124 19:13
endif
!
!
DRNA(N_ND) = 1.0 !
用于计算方程系数A(i,k) 20110211 12:45
NDTP(N_ND) = 51 ! 可省 20081126
21:47 ! 改为需要 20110211 12:46
STTP(N_ND) = 'ZC' !
是否计算方程系数A(i,k)时有用,勿缺 20110123 9:06 ! 改为可省 20110211 12:46
LNDID(iND,j) = NDID(N_ND) !
替换相邻节点(对应表333) 20110130 16:27
! GN_Read.F90 20080603
! 读入数据
subroutine GN_Read
!
! 从表137中移出 20110211 23:51
do iWU = 1,M_WU
jND = ID_WU(iWU)
!
jJH = IJHhash(jND) ! 20110211 23:56
if(NT_JH(jJH).eq.1) then ! 边界条件只有1个数据 20110211
23:59
!
LS = LNDN(jND)
if(STTP(jND).eq.'DP') then !
泵站
QWUR(iWU,LS)
= 0. ! 需水总流量赋初值 20110211 17:55
jDP =
IDPhash(jND)
if(PMCL(jDP).gt.250.0) then ! 咸度超标
QWUR(iWU,1) = 0.0 ! 20110211 18:41
else
if(PMPQ(jDP).gt.0.0) then
QWUR(iWU,1) = PMPQ(jDP) ! PMPQ(jDP)从表209读入 20110211 18:13
else
QWUR(iWU,1) = QDSN(iWU,1) ! 按设计流量 20110211
18:52
endif
endif
!
if(LS.eq.2)
then ! 按程序设定这时只有1个取水口,量入为出
QWUR(iWU,LS) = QWUR(iWU,1)
!
elseif(LS.eq.3) then ! 有2个进水口,非此即彼 (!洪湾泵站)
if(QWUR(iWU,1).gt.0.0) then
QWUR(iWU,2) = 0.0
else
if(PMPQ(jDP).gt.0.0) then
QWUR(iWU,2) = PMPQ(jDP) ! 20110211 19:02
else
QWUR(iWU,2) = QDSN(iWU,1) !
20110211 18:52
endif
endif
QWUR(iWU,LS) = QWUR(iWU,1) + QWUR(iWU,2)
!
elseif(LS.ge.4) then ! 有3个以上进水口,争先恐后(!广昌泵站) 20110211 19:26
if(QWUR(iWU,1).gt.0.0) then
do i = 2,LS - 1
QWUR(iWU,i) = 0.0
enddo
QWUR(iWU,LS) = QWUR(iWU,1)
!
else
QWUR(iWU,1) = 0.0
if(PMPQ(jDP).gt.0.0) then
QWUR(iWU,LS) = PMPQ(jDP)
else
QWUR(iWU,LS) = QDSN(iWU,1) !
20110211 20:18
endif
!
do i = 2,LS - 1
QWUR(iWU,i) = 0.0
enddo
RLS = 0.
do i = 2,LS - 1
iND =
INDhash(LNDID(jND,i))
!
if(STTP(iND).eq.'DP') then !
经相邻泵站取水
iDP =
IDPhash(iND)
if(PMCL(iDP).gt.250.0) then ! 咸度超标
QWUR(iWU,i) = 0.0 ! 20110211 19:48
else
if(PMPQ(iDP).gt.0.0) then
QWUR(iWU,i) = PMPQ(iDP) ! 20110211 19:02
else
QWUR(iWU,i) = QDSN(iWU,i) ! 20110211 19:56
endif
RLS = RLS + QWUR(iWU,i)
if(RLS.ge.QWUR(iWU,LS)) then
QWUR(iWU,i) = QWUR(iWU,i) - RLS +
QWUR(iWU,LS)
goto 120
endif
endif
!
else ! 最后通过其它节点取水 20110211
20:46
QWUR(iWU,i)
= QWUR(iWU,LS) - RLS
goto
120
endif
enddo
120 continue
endif
endif
!
else ! 用水户 20110211
20:50
if(LS.eq.2)
then ! 按程序设定这时只有1个取水口,量入为出(!香洲水厂)
QWUR(iWU,1) = QWUR(iWU,2) ! QWUR(iWU,2)从表261读入
!
elseif(LS.ge.3) then ! 有2个以上取水口,分类协调(!拱北水厂)
do i = 1,LS - 1
QWUR(iWU,i) = 0.0
enddo
RLS = 0.0
if(WTTP(iWU).eq.1) then ! 排队索取
do i = 1, LS - 1
QWUR(iWU,i) =
QDSN(iWU,i)
RLS = RLS + QWUR(iWU,i)
if(RLS.ge.QWUR(iWU,LS))
then
QWUR(iWU,i)
= QWUR(iWU,i) - RLS + QWUR(iWU,LS)
goto 250 !
20110211 21:24
endif
enddo
250 continue
! 哈哈
elseif(WTTP(iWU).eq.2)
then ! 比例分配 20110211 21:48
RLS1 = 0.0
do i = 1, LS - 1
RLS1 = RLS1 +
QDSN(iWU,i)
enddo
do i = 1, LS - 1
QWUR(iWU,i) = QWUR(iWU,LS) *
QDSN(iWU,i) / RLS1
enddo
elseif(WTTP(iWU).eq.3) then ! 流水争先
! 咖啡麦当劳(21.0) 20110211 22:25
elseif(WTTP(iWU).eq.4) then ! 遇强则强
!
endif
endif
endif
!
do i2 = 1,NT
Q_JH(jJH,i2)
= QWUR(iWU,LS) ! 20110212 0:14
QQ_JH(jJH,i2) = Q_JH(jJH,i2)
enddo
endif
!
enddo
!
!
!
do i = 1, M_NR !
读表130前
TDSQ(i) = 0.0 !
避免水库空缺时无值(下午,由于随意删去一个水库编码,结果一塌糊涂) 20110215 23:59
enddo
!
!
!
! ZHread209.F90 20110121 9:23 ! (莲花山外山,水网洞中洞 20110214 0:53)
! 读入表209,泵站水情
subroutine ZHread209
use MSK_Mod
use GN_Mod
use WYH_Mod ! 20081201 14:58
implicit none
!
inquire(file=Filename209,exist=alive)
if(alive) then
open(209,file=Filename209,status='old')
read(209,*)
read(209,*)
iDP = 0 !
统计泵站数 20110128 12:13
do
while(.true.)
do i = 3,14
CLS(i) = '-100' ! 下面读入有空缺时赋值为-100 20110207
16:16
enddo
read(209,*,iostat=status) k,TM_ymd,TM_hms,CLS(3),CLS(4),
& ! 20080914 11:08
CLS(5),CLS(6),CLS(7),CLS(8),CLS(9),CLS(10),CLS(11),CLS(12),CLS(13),
& ! 20110121 9:25
CLS(14) ! 20110213 1:08
if(status/=0) exit
if(any(ISTCD(:).eq.k)) then
if(ISThash(k).le.O_ND) then ! 该节点为河网节点(避免无关节点)
20081205 18:19
iND = ISThash(k)
iJH = IJHhash(iND)
if(STTP(iND).eq.'DP') then !
泵站节点 20110121 9:27
iDP = iDP +
1 ! 20110128 12:14
!PDCHCD(iDP)
= CLS(12) ! 20110207 14:01
read(CLS(7),*) PMPQ(iDP) ! 20110207 15:57
read(CLS(8),*) RLS3 ! 调整位置 20110213 1:19i
!read(CLS(13),*) RLS3 ! 20110122 18:39
PMCL(iDP) =
RLS3 ! 20110207 16:02
if(CLS(13).eq.'1') then ! 20110207 13:48 (happy two year!)
read(CLS(3),*)
PPUPZ(iDP) ! 20110203 15:00 (水洞方除夕)
elseif(CLS(13).eq.'0'.or.CLS(12).eq.'O') then
read(CLS(4),*) PPDWZ(iDP)
endif
PDCHCD(iDP)
= CLS(13) ! 20110213 18:32
read(CLS(14),*) IPRCD(iDP) ! 泵站引排目标水库 20110213 1:33
! (!南沙湾泵站——大镜山水库,洪湾泵站——竹仙洞水库,OK)
! (!广昌泵站——南屏水库,增加一个虚拟泵站节点,以避免影响南沙湾及洪湾泵站 20110214 15:01)
! (!蛇地坑,银坑泵站从属洪湾泵站)
call TM_mdhm ! 20080619 9:17
if(iSCHTP_now.ne.2) then ! 20081201 14:41
if(TM_year.ge.BGTM_year.and.TM_year.le.EDTM_year)
then ! 增加if/end行,过滤掉计算时间以外的数据 20081012 16:32
goto 12
endif
elseif(iSCHTP_now.eq.2) then !
if(TM_year.ge.REFTM_year.and.TM_year.le.REDTM_year)
then
if(TM_mon.eq.2.and.RMON_TM(TM_year,2).eq.29) then ! 合并为一句 20081215
23:50
TM_year = BGTM_year + TM_year
- REFTM_year
if(MON_TM(TM_year,2).eq.29)
then
goto
12
endif
else
TM_year = BGTM_year + TM_year
- REFTM_year
goto 12
endif ! 时间转换到当前计算年份 20081201 23:16
endif
endif
goto 24 !
20110120 12:34
12
continue
!if(STTP(iND).eq.'DP') then ! 20110201 2:40
NT_JH(iJH) = NT_JH(iJH) + 1
i = NT_JH(iJH)
OBT(iJH,i) = (MONDAY_TTM(TM_year,TM_mon) + TM_day - 1)*24. + TM_hh
+ TM_mm/60. ! 20081013 10:55
!if(NDTP(iND).eq.22) then ! 泵站为直接边界 20110120
14:29
if(RLS3.le.250.0) then ! 与引排特征值无关 20110125
14:48
read(CLS(7),*) OBQ(iJH,i) ! 给定边界流量
elseif(RLS3.gt.250.0) then
OBQ(iJH,i) = 0.0 ! 咸度超标,停止外江抽水 20110124
18:38
endif
if(NDTP(iND).eq.69) then ! 泵站为间接边界 20110124
19:04
do j = 1,LNDN(iND)
iNDL = INDhash(LNDID(iND,j))
if(NDTP(iNDL).eq.22) then !
相邻节点为边界
iJHL = IJHhash(iNDL)
NT_JH(iJHL)
= i ! 注意定义 20110201 3:50
OBT(iJHL,i) = (MONDAY_TTM(TM_year,TM_mon) + TM_day - 1)*24. + TM_hh
+ TM_mm/60. ! 20110201 2:17
if(RLS3.le.250.0) then ! 外江取水口引水,另设外边界
OBQ(iJHL,i) = OBQ(iJH,i) ! 20110201 2:47
elseif(RLS3.gt.250.0) then ! 内河道或管网排水,内边界 20110121 18:29
OBQ(iJHL,i) = 0.0 ! 咸度超标 20110124 18:37
endif
endif
enddo
endif
24
continue
!
!
if(iDP.ne.M_DP) then ! 2110128 11:15
I_error = I_error + 1
EWSHOW = '表209的泵站数与表333中的不匹配'
write(14,"(i3,',',a1,',',i3,',',2(a1,','),a64,',')")
&
I_error,Blank,DBID(209),Blank,Blank,EWSHOW
endif
!
close(209)
else
I_warning = I_warning + 1 !
20090419 3:18
EWSHOW = '缺少表209文件'
write(14,"(a1,',',i6,',',i3,',',2(a1,','),a33,',')")
&
Blank,I_warning,DBID(209),Blank,Blank,EWSHOW ! 20080616 20:56
endif
!
end subroutine ZHread209
!
!
!
!
GNread137.F90 20110210 10:58
!
读入表137数据水厂及取水口信息
subroutine
GNread137
!
use MSK_Mod
use GN_Mod
use WYH_Mod ! 20081218 15:48
implicit none
!
! 水厂(用水户)与取水口(隐含泵站)
allocate (LSTN(M_WU),WTTP(M_WU)) ! 表137 20110210
16:50
allocate (CAPACITY(M_WU))
allocate (QDSN(M_WU,LNDNmax)) ! 20110210
16:53
allocate (QWUR(M_WU,LNDNmax)) ! 20110208
16:08
!
LSNDNmax = 0 ! 统计用水户最大相邻取水节点数
do iWU = 1,M_WU
iND = ID_WU(iWU)
LSTN(iWU) = 0 ! 赋初值 20110210 23:36
if(STTP(iND)(1:1).eq.'W') then ! 排除泵站 20110210
22:17
if((LNDN(iND)-1).gt.LSSTNmax)
then
LSNDNmax =
LNDN(iND) - 1 ! 20110210 21:03
endif
endif
enddo
!
LSSTNmax = 0 ! 统计最大相关取水口数
inquire(file=Filename137,exist=alive)
if(alive) then
open(137,file=Filename137,status='unknown')
read(137,*)
read(137,*)
LS = 0 ! 统计用水户数
do while(.true.)
do j =
1,8
CLS(j) = '0' ! 20110210 17:17
enddo
CLS(9) = '1'
! 20110210 17:19
read(137,*,iostat=status)
ILS(1),CLS(2),CLS(3),CLS(4),CLS(5),CLS(6),CLS(7),CLS(8),CLS(9) !
20110210 17:26
if(status/=0) exit
!
read(CLS(8),*) ILS(8)
if(ILS(8).gt.LSSTNmax) LSSTNmax = ILS(8) ! 不管是否有用,都加入统计,以免溢出
20110211 3:55
!
if(any(ISTCD(:).eq.ILS(1))) then
iND = ISThash(ILS(1))
if(STTP(iND)(1:1).eq.'W') then
LS = LS +1 !
iWU = IWUhash(iND) ! 20110210 17:33
read(CLS(6),*) CAPACITY(iWU)
!read(CLS(8),*) LSTN(iWU)
LSTN(iWU) = ILS(8) ! 20110211 3:57
read(CLS(9),*) WTTP(iWU)
!if(LSTN(iWU).gt.LSSTNmax) LSSTNmax = LSTN(iWU)
! 可能产生溢出 20110211 3:56
endif
else
if(any(ISTCD(:).ne.ILS(1))) then
I_warning = I_warning + 1
EWSHOW = '没有用到的水厂,测站编码:' ! 20110210 17:41
write(14,"(a1,',',i6,',',i3,',',a1,',',a1,',',a26,i8,',')")
&
Blank,I_warning,DBID(137),Blank,Blank,EWSHOW,ILS(1)
endif
enddo
if(LSNDNmax.le.LSSTNmax)
then
!
elseif(LSNDNmax.gt.LSSTNmax)
then ! 20110210 21:17
if(LSNDNmax.ge.2) then
I_error = I_error + 1
EWSHOW = '表137水厂取水口不够多' ! 宁多勿少
write(14,"(i3,',',a1,',',i3,',',2(a1,','),a33,',')")
&
I_error,Blank,DBID(137),Blank,Blank,EWSHOW
endif
endif
if((LS+M_DP).ne.M_WU) then !
2110210 20:41
I_warning = I_warning + 1
EWSHOW = '表137的水厂数与表333中的不匹配'
write(14,"(a1,',',i3,',',i3,',',2(a1,','),a36,',')")
&
Blank,I_warning,DBID(137),Blank,Blank,EWSHOW
endif
close(137)
else
if(LSNDNmax.ge.2) then ! 20110210 22:21
I_error = I_error + 1
EWSHOW = '缺少表137文件'
write(14,"(i3,',',a1,',',i3,',',2(a1,','),a33,',')")
&
I_error,Blank,DBID(137),Blank,Blank,EWSHOW
endif
endif
!
allocate (LSCD(LSSTNmax),LSTCD(M_WU,LSSTNmax)) !
20110210 19:03
allocate (LDNQ(LSSTNmax),LDSNQ(M_WU,LSSTNmax)) !
20110210 22:55
!
inquire(file=Filename137,exist=alive)
if(alive) then
open(137,file=Filename137,status='unknown')
read(137,*)
read(137,*)
do while(.true.)
read(137,*,iostat=status)
ILS(1),CLS(2),CLS(3),CLS(4),CLS(5),CLS(6),CLS(7),ILS(8),CLS(9)
&
,(LSCD(j),LDNQ(j),j=1,ILS(8))
if(status/=0) exit
if(any(ISTCD(:).eq.ILS(1))) then
iND = ISThash(ILS(1))
if(STTP(iND)(1:1).eq.'W') then
iWU = IWUhash(iND) ! 20110210 17:33
if(LSTN(iWU).ge.1) then
do j = 1,LSTN(iWU)
LSTCD(iWU,j)
= LSCD(j) ! 20110210 19:47
LDSNQ(iWU,j)
= LDNQ(j) ! 20110210 23:00
enddo
endif
endif
endif
enddo
close(137)
!
do iWU = 1,M_WU
jND = ID_WU(iWU)
LS = LNDN(jND)
QDSN(iWU,LS) = 0. !
取水总设计流量赋初值
if(LSTN(iWU).ge.1) then
do i = 1,LS
- 1 ! 20110210 0:57
iND = INDhash(LNDID(jND,i))
do j = 1,LSTN(iWU)
if(LSTCD(iWU,j).eq.ISTCD(iND)) then
QDSN(iWU,i) = LDSNQ(iWU,j)
QDSN(iWU,LS) = QDSN(iWU,LS) +
QDSN(iWU,i)
endif
enddo
enddo
elseif(LSTN(iWU).eq.0)
then
if(STTP(jND)(1:1).eq.'W') then ! 用水户只有一个取水口时LSTN可省缺为0 20110210
1:04
! 不用考虑QDSN
endif
if(STTP(jND).eq.'DP') then ! 泵站不统计LSTN省缺为0
jDP = IDPhash(jND)
if(LS.ge.3) then ! 有2个以上取水口 20110211 17:07
!do i = 1,LNDN(jND) - 1 ! 20110210 0:57
do i = 1,LS - 1 ! 20110211 17:08
iND =
INDhash(LNDID(jND,i))
if(STTP(iND).eq.'DP') then !
经相邻泵站取水
iDP =
IDPhash(iND)
QDSN(iWU,i) = PTDSQ(2,iDP)
else ! 经泵站本身取水口(可以有多处选择)
20110211 17:38
QDSN(iWU,i) = PTDSQ(2,jDP)
endif
QDSN(iWU,LS) = QDSN(iWU,LS) +
QDSN(iWU,i) ! 意义不大 20110210 1:55
enddo
endif
endif
endif
!
enddo
!
endif
!
end
subroutine GNread137 ! 20110210 10:57
!
! GNread104.F90 20110215
0:07
! 读入表104数据 测站关系信息
subroutine ZHread104
!
use MSK_Mod
use GN_Mod
use WYH_Mod ! 20081218 15:48
implicit none
!
allocate (UPSTCD(M_WU),UPBGZ(M_WU),RLMRK(M_WU))
! 20110215 14:59
allocate
(DWSTCD(M_WU),DWBGZ(M_WU),RSTCD(M_WU))
!
inquire(file=Filename104,exist=alive)
if(alive) then
open(104,file=Filename104,status='unknown')
read(104,*)
read(104,*)
M_RL = 0 ! 统计关系站数
do while(.true.)
do j = 1,6
CLS(j) = '0'
enddo
read(104,*,iostat=status) CLS(1),CLS(2),CLS(3),CLS(4),CLS(5),CLS(6)
! 20110215 17:56
if(status/=0) exit
read(CLS(1),*) ILS(1) ! 部分表没这样做 20110215 15:11
if(any(ISTCD(:).eq.ILS(1))) then
iND
= ISThash(ILS(1)) ! 20110215 17:36
if(STTP(iND).eq.'DP'.or.STTP(iND).eq.'DD'.or.STTP(iND)(1:1).eq.'W')
then
M_RL = M_RL +1 !
RSTCD(M_RL) = ILS(1) ! 20110215 19:14
read(CLS(2),*) RLMRK(M_RL)
if(RLMRK(M_RL).eq.'U') then
read(CLS(3),*) UPSTCD(M_RL)
read(CLS(4),*) UPBGZ(M_RL)
elseif(RLMRK(M_RL).eq.'D') then
read(CLS(5),*) DWSTCD(M_RL)
read(CLS(6),*) DWBGZ(M_RL)
elseif(RLMRK(M_RL).eq.'B') then
read(CLS(3),*) UPSTCD(M_RL)
read(CLS(4),*) UPBGZ(M_RL)
read(CLS(5),*) DWSTCD(M_RL)
read(CLS(6),*) DWBGZ(M_RL)
endif
endif
else if(any(ISTCD(:).ne.ILS(1))) then
I_warning = I_warning + 1
EWSHOW = '没有用到的关系站,测站编码:' ! 20110215 15:25
write(14,"(a1,',',i6,',',i3,',',a1,',',a1,',',a26,i8,',')")
&
Blank,I_warning,DBID(104),Blank,Blank,EWSHOW,ILS(1)
endif
enddo
if(M_RL.lt.M_WU) then ! 2110215 15:29
I_warning = I_warning + 1
EWSHOW = '表104的关系站数没有覆盖表333中的全部'
write(14,"(a1,',',i3,',',i3,',',2(a1,','),a36,',')")
&
Blank,I_warning,DBID(104),Blank,Blank,EWSHOW
endif
close(104)
else
if(M_RL.eq.0) then ! 20110215 15:31
I_warning = I_warning + 1
EWSHOW = '缺少表104文件或不存在关系站'
write(14,"(a1,',',i3,',',i3,',',2(a1,','),a33,',')")
&
Blank,I_warning,DBID(104),Blank,Blank,EWSHOW
endif
endif
end subroutine ZHread104 !
20110215 0:08
!
!
!
! GN_VFWater.F90 20080703
10:49
!PROGRAM
GN_VFWater
subroutine
GN_Main
!
use MSK_Mod
use GN_Mod
use dfcom
use WYH_Mod ! 20081119 10:20
implicit none
!
!
!
! 关系节点 20110215 19:04
do iRL = 1,M_RL
iND = ISThash(RSTCD(iRL)) !
20110215 19:15
iJH = IJHhash(iND)
iWU = IWUhash(iND)
if(STTP(iND).eq.'DP')
then
if(RLMRK(iRL).eq.'U') jND = ISThash(UPSTCD(iRL))
if(RLMRK(iRL).eq.'D') jND = ISThash(DWSTCD(iRL))
if(STTP(jND).eq.'RR') then ! 20110215 19:49
jNR = INRhash(jND) ! 目标水库
if(RLMRK(iRL).eq.'U'.and.H1_NR(jNR).ge.DWBGZ(iRL)) then ! 20110215
19:31
Q_JH(iJH,i2) = 0.0 ! 无需动用调咸泵站 20110213 19:43
QQ_JH(iJH,i2) = Q_JH(iJH,i2)
elseif(RLMRK(iRL).eq.'D'.and.H1_NR(jNR).ge.DWBGZ(iRL)) then !
20110215 19:29
RLS = FSLTDZ_tm(jNR,i2) - 0.01 ! 避免有数字接近但有微小误差而产生的问题 29119213
22:49
if(H1_NR(jNR).ge.RLS) then
Q_JH(iJH,i2) = 0.0 ! 关闭泵站
QQ_JH(iJH,i2) = Q_JH(iJH,i2)
if(LNDN(iND).ge.3) then ! 20110213 20:46
do k = 1, LNDN(iND)
QWUR(iWU,k) = 0.0 ! 目前与时间无关 20110213 23:26
enddo
endif
else
if(i2.ge.2.and.Q_JH(iJH,(i2-1)).eq.0.0) then
Q_JH(iJH,i2) = 0.0 ! 继续关闭泵站
QQ_JH(iJH,i2) = Q_JH(iJH,i2)
if(LNDN(iND).ge.3) then ! 20110213 20:46
do k = 1, LNDN(iND)
QWUR(iWU,k) = 0.0
enddo
endif
endif
endif
if(NDTP(iND).eq.69) then ! 泵站为间接边界 20110213 21:18
do j = 1, LNDN(iND) - 1
iNDL = INDhash(LNDID(iND,j))
if(NDTP(iNDL).eq.22) then ! 相邻节点为边界
iJHL
= IJHhash(iNDL)
Q_JH(iJHL,i2) = Q_JH(iJH,i2)
QQ_JH(iJHL,i2) = Q_JH(iJHL,i2)
endif
enddo
endif
!
endif
!
endif
endif
enddo
!
!
!
if(M_TJ.ge.1) then !
存在调节点
do iTJ = 1,M_TJ ! 都与泵站相关
20110201 4:54 ! 与水闸等也有关 20110218 15:39
jND =
ID_TJ(iTJ)
jJH =
IJHhash(jND)
dQ38 =
QQ_JH(jJH,i2) - Q_TJ(iTJ) ! 20110128 22:45
if(dQ38.gt.0.00001) then ! 避免数据接近0 20110218 11:34
do j = 2,LNDN(jND) ! 调节点从第2个节点开始
iND = INDhash(LNDID(jND,j))
iJH = IJHhash(iND)
LS = LNDN(iND) ! 20110218 11:54
if(LS.eq.1) then ! 外边界 20110218 11:55
if(dQ38.gt.0.0) then ! 20110218 13:47
RLS = Q_JH(iJH,i2) - dQ38 ! 20110218 13:50
if(RLS.ge.0.0) then
Q_JH(iJH,i2) = Q_JH(iJH,i2) - dQ38 ! OK,此为新的边界流量 20110128
22:37
dQ38 = 0.
else
dQ38 = dQ38 - Q_JH(iJH,i2) ! 还要继续
Q_JH(iJH,i2) = 0.0
endif
endif
elseif(LS.eq.2) then ! 传统用水户边界(一进一出) 20110218 12:00
if(dQ38.gt.0.0) then ! 20110218 13:47
RLS = Q_JH(iJH,i2) - dQ38 ! 20110218 13:50
if(RLS.ge.0.0) then
Q_JH(iJH,i2) = Q_JH(iJH,i2) - dQ38 ! OK,此为新的边界流量 20110128
22:37
dQ38 = 0.
else
dQ38 = dQ38 - Q_JH(iJH,i2) ! 还要继续
Q_JH(iJH,i2) = 0.0 ! 新的边界流量为0
endif
iNJ = INJhash(iND)
Q_NJ(iNJ,i2)
= Q_JH(iJH,i2) ! 给内节点赋值
iNDL
= INDhash(LNDID(iND,1))
iJHL
= IJHhash(iNDL)
Q_JH(iJHL,i2) = Q_JH(iJH,i2) ! 20110218 12:19
QQ_JH(iJHL,i2) = Q_JH(iJHL,i2)
endif
endif
elseif(LS.ge.3) then ! 水洞型用水户边界(多进一出) 20110218 12:25
iWU
= IWUhash(iND) ! 20110218 13:16
QQWUR(iWU,LS)
= 0. ! 需水总流量赋初值 20110218 12:59
do k = 1, LS - 1
if(dQ38.gt.0.0) then ! 20110218 13:47
RLS = QQWUR(iWU,k) - dQ38 ! 20110218 13:50
if(RLS.ge.0.0) then
QQWUR(iWU,k) = QQWUR(iWU,k) - dQ38 ! OK,此为新的边界流量之一 20110218
12:49
dQ38 = 0.
else
dQ38 = dQ38 - QQWUR(iWU,k) ! 还要继续,直到结束k 20110218 13:31
QQWUR(iWU,k) = 0.0
iNDL
= INDhash(LNDID(iND,k))
if(NDTP(iND).eq.69.and.NDTP(iNDL).eq.22) then ! 泵站为间接边界 20110218
15:46
iJHL
= IJHhash(iNDL)
Q_JH(iJHL,i2) = QQWUR(iWU,k) ! 20110218 12:19
QQ_JH(iJHL,i2) = Q_JH(iJHL,i2)
endif
endif
QQWUR(iWU,LS)
= QQWUR(iWU,LS) + QQWUR(iWU,k)
endif
enddo
Q_JH(iJH,i2)
= QQWUR(iWU,LS) ! 20110218 13:03
iNJ =
INJhash(iND)
Q_NJ(iNJ,i2)
= Q_JH(iJH,i2)
endif
!
QQ_JH(iJH,i2)
= Q_JH(iJH,i2)
iWU =
IWUhash(iND)
W_Q(iWU,i2) =
Q_JH(iJH,i2) ! 20110201 7:47
!
enddo ! j
!
elseif(dQ38.eq.0.0) then ! 20110128 23:08
dQ38 = 0.0 ! 含义不同了,统计用水户缺水流量 20110128 23:24
do j = 2,LNDN(jND)
iND = INDhash(LNDID(jND,j))
if(NDTP(iND).ge.70.and.NDTP(iND).le.79) then
iWU = IWUhash(iND)
if(W_QQ(iWU,i2).lt.W_Q(iWU,i2)) then ! 用水小于需水 20110128 21:38
dQ38 = dQ38 + W_Q(iWU,i2) - W_QQ(iWU,i2)
endif
endif
enddo
if(dQ38.gt.0.0) then
do j = 2,LNDN(jND)
iND = INDhash(LNDID(jND,j))
iJH = IJHhash(iND) ! 20110202 21:39
if(dQ38.gt.0.0.and.NDTP(iND).eq.22.and.STTP(iND).eq.'DP') then !
指定泵站 20110128 23:49
iDP = IDPhash(iND)
RLS1 = PTDSQ(2,iDP) - Q_JH(iJH,i2)
if(RLS1.ge.dQ38) then ! 允许流量足够大 20110128 23:38
Q_JH(iJH,i2)= Q_JH(iJH,i2) + dQ38 ! OK,此为新的边界流量 20110128
23:29
dQ38 = 0.
else
Q_JH(iJH,i2) = Q_JH(iJH,i2) + RLS1
dQ38 = dQ38 - RLS1 ! 还要继续
endif
QQ_JH(iJH,i2) = Q_JH(iJH,i2)
iWU = IWUhash(iND) ! 20110201 9:28
W_Q(iWU,i2) = Q_JH(iJH,i2) ! 20110201 7:47
if(LNDN(iND).ge.2) then ! 内边界 20110125 20:58
iNJ = INJhash(iND)
Q_NJ(iNJ,i2)
= Q_JH(iJH,i2) ! 给内节点赋值
endif
elsif(dQ38.gt.0.0.and.NDTP(iND).eq.69) then ! 泵站为间接边界 20110124
19:04
do k = 1,LNDN(iND)
iNDL = INDhash(LNDID(iND,k))
iJHL
= IJHhash(iNDL)
if(dQ38.gt.0.0.and.NDTP(iNDL).eq.22) then ! 相邻节点为边界
iDP = IDPhash(iND)
RLS1 = PTDSQ(2,iDP) - Q_JH(iJHL,i2)
if(RLS1.ge.dQ38) then ! 允许流量足够大 20110128 23:38
Q_JH(iJHL,i2)= Q_JH(iJHL,i2) + dQ38 ! OK,此为新的边界流量 20110128
23:29
Q_JH(iJH,i2) = Q_JH(iJHL,i2) ! 20110202 21:20
dQ38 = 0.
else
Q_JH(iJHL,i2) = Q_JH(iJHL,i2) + RLS1
Q_JH(iJH,i2) = Q_JH(iJHL,i2) ! 20110202 21:20
dQ38 = dQ38 - RLS1 ! 还要继续
endif
QQ_JH(iJHL,i2) = Q_JH(iJHL,i2)
QQ_JH(iJH,i2) = Q_JH(iJH,i2) ! 20110202 21:24
iWU = IWUhash(iND) ! 20110201 9:28
W_Q(iWU,i2) = Q_JH(iJH,i2) ! 20110201 7:47
if(LNDN(iND).ge.2) then ! 20110202 22:09
iNJ = INJhash(iND) ! 20110201 22:05
Q_NJ(iNJ,i2) = Q_JH(iJH,i2) ! 20110202 21:59
endif
endif
enddo ! k
endif
enddo
! j
call
Model_MSK_Main ! 20110129 0:13
call
Model_MSK_Main
elseif(dQ38.lt.0.0) then ! 20110129
0:11
I_warning = I_warning + 1
EWSHOW = '供水破坏'
write(14,"(i3,',',(i4,'-',i2.2,'-',i2.2,'
',i2,':00:00'),a1,',',',',2(a1,','),a33,',')")
&
I_warning,ITM_year(i),ITM_mon(i),ITM_day(i),ITM_hh(i),Blank,Blank,Blank,EWSHOW
! 20110125 22:10
endif
endif
!
!
!
! Model_MSK.F90 20081118 19:03
! 建立河段方程、求解、计算节点流量的主程序
subroutine Model_MSK_Main
use MSK_Mod
use GN_Mod
use WYH_Mod ! 20081106 17:56
use IMSL
implicit none
!
!
!
建立河段方程
do i =
1,M_NH ! 对河段循环,计算河段方程的系数和常数项
!
!
do j = 1,LNDN(iND) !
水网恢恢,疏蓄结合,来去无常 20110212 17:56
iNDL =
INDhash(LNDID(iND,j))
iJHL = IJHhash(iNDL) ! 首节点的相邻节点在全部节点中的序号 20081127 16:33
if(BJ_type(iJHL).eq.1) then ! 20081115 23:04
if(JH_type(iJHL).eq.13) then ! 相邻用水户节点
iNJL = INJhash(iNDL)
if(ID_NJ(iNJ).eq.ID_NJL(iNJL,M_NJL(iNJL)))
then
! 相邻退水点
!
如果增加简单节点以自动增加用水户退水虚拟河段,则不会出现该情况 20110211 15:37
!B(i) = B(i) + C0_ZHD(i)**M_ZHD(i) * Q_NJ(iNJL,i2) ! 20081218
10:21
! iND无论是否某个用水户的退水点都不用继续计算B(i)
20110212 17:06
! 相邻取水点 20081124 2:40
! 1、水洞收缩原理:原则上不允许从用水户边界节点取水形成分叉口 20110212
16:55
! 2、即:出口唯一,不允许节点iND下游存在多个相邻取水点及退水点 20110212
17:15
else ! 3、为安全计,应同时符合膨胀原理
20110211 15:41
!
问题:目前水流QWUR存储在形式上采用收缩原理,边界复杂时可能崩塌 20110212 17:41
if(LNDN(iNDL).le.2) then
B(i) = B(i) - C0_ZHD(i)**M_ZHD(i) * Q_JH(iJHL,i2) ! 20081218
10:21
!B(i) = B(i) - C0_ZHD(i)**M_ZHD(i) * Q_JH(iJHL,i1) ! 20081124
2:43
elseif(LNDN(iNDL).ge.3) then !
允许节点iNDL存在多个相邻取水点 20110212 15:14
do k = 1,
LNDN(iNDL) - 1
jND = INDhash(LNDID(iNDL,k))
if(jND.eq.iND) then
B(i) = B(i) - C0_ZHD(i)**M_ZHD(i) * QWUR(iWU,k) ! 20110212
17:21
endif
enddo
endif
endif
!
endif
endif
enddo ! 20081127 16:34
!
!
elseif(BJ_type(iJH).eq.0) then ! 首节点为平衡内节点 ! 20081022 18:00
!
!
if(LNDN(iNDL).eq.2) then
B(i) = B(i) - C0_ZHD(i)**M_ZHD(i) * Q_JH(iJHL,i2) ! 20081218
10:23
elseif(LNDN(iNDL).ge.3) then !
允许存在多个相邻取水点 20110212 1:32
iWU =
IWUhash(iNDL) ! 20110212 1:35
do k = 1,
LNDN(iNDL) - 1
jND = INDhash(LNDID(iNDL,k))
if(jND.eq.iND) then
B(i) = B(i) - C0_ZHD(i)**M_ZHD(i) * QWUR(iWU,k)
! 子夜乱加,黄昏再减 20110212 18:20
!B(i) = B(i) + C0_ZHD(i)**M_ZHD(i) * QWUR(iWU,k)
! 20110212 1:48
endif
!
!
else
if(BJ_type(iJHL).eq.0) then ! 20081115 23:51
if(JH_type(iJHL).eq.5) then ! 相邻节点为河段节点 ! 包括虚拟河段 20081126
k = INHhash(ID_NJL(iNJ,j)) ! 相邻河段在河段中的序号
if(ID_NJ(iNJ).eq.ID_MJ(k)) then ! 首节点为相邻河段的末节点 20081115 21:58
!iND = ID_NH(i) ! 20110118 !
水洞依稀从此诣 20110214 1:12
jND = ID_NH(i) !
不要和iND混淆,下面两行相应修改 20110212 1:19
if(NDTP(jND).eq.51) then !
与下面相当 20110123 9:12
A(i,k) = A(i,k) - DRNA(jND)*C0_ZHD(i)**M_ZHD(i) ! 取代下面的 20110211
12:49
! 这里的DRNA(iND)为出流系数或消退系数,
! 正常河段为1.0,分流河段为分流比,用水户虚拟退水河段为回归水系数 20110211
11:43
endif
endif
else if(JH_type(iJHL).ne.5) then ! ,,,太难处理了,还是只用河段来连接的好 20081116
2:41
!
!
! 解方程
call
LSARG(M_NH,A,M_NH,B,1,X) ! 20071130
!
!
!
if(LNDN(iNDL).ge.3) then
do k = 1, LNDN(iNDL) - 1
jND = INDhash(LNDID(iNDL,k))
if(jND.eq.iND) then
Q_NJ(iNJ,i2) = Q_NJ(iNJ,i2) - QWUR(iWU,k) ! 暂不考虑缺水 20110212
2:24
if(Q_NJ(iNJ,i2).lt.ZLMNQ(iJH)) then ! 不能让节点取水后的流量小于生态最小值ZLMNQ
dQ_LS = ZLMNQ(iJH) - Q_NJ(iNJ,i2) ! 20081106 11:09
Q_NJ(iNJ,i2) = ZLMNQ(iJH)
QWUR(iWU,k) = QWUR(iWU,k) - dQ_LS
endif
endif
enddo
else
! 由于增加了退水虚拟河段,以下暂不修改 20110212 2:53
if(Q_NJ(iNJ,i2).gt.ZLMNQ(iJH)) then ! 增加此if判别 20081112 17:51
Q_NJ(iNJ,i2)
= Q_NJ(iNJ,i2) - W_Q(iWU,i2)
W_QQ(iWU,i2) = W_Q(iWU,i2) ! 20081202 16:00
!
W_QR(iWU,i2) = W_QQ(iWU,i2) * F_REFL(iWU,i2) ! 20110201 16:11
Q_JH(iJHL,i2)
= W_QQ(iWU,i2)
Q_NJ(iNJL,i2)
= W_QR(iWU,i2)
! 漏得太久了,秒杀了N多时间 20110202 17:44 (虫洞欲除夕)
!
!
do iWU =
1,M_WU
iND = ID_WU(iWU)
iJH = IJHhash(iND) ! 20110211 23:56
if(NT_JH(iJH).eq.1) then ! 边界条件只有1个数据 20110211
23:59
LS = LNDN(iND)
if(STTP(iND)(1:1).eq.'W') then ! 用水户 20110212
23:49
if(LS.ge.3) then ! 为了拱北 20110212 0:04
QWUR(iWU,LS)
= 0. ! 需水总流量赋初值 20110211 17:55
do k = 1, LS
- 1
QWUR(iWU,LS) = QWUR(iWU,LS) + QWUR(iWU,k)
enddo
W_QQ(iWU,i2)
= QWUR(iWU,LS)
W_QR(iWU,i2)
= W_QQ(iWU,i2) * F_REFL(iWU,i2) ! 用水户回归水 20110209 1:06
iNJ = INJhash(iND)
Q_JH(iJH,i2)
= W_QQ(iWU,i2) ! 20110213 0:02
Q_NJ(iNJ,i2)
= W_QR(iWU,i2)
QQ_JH(iJH,i2) = W_QQ(iWU,i2)
endif
endif
endif
enddo
!
!
!
!write(5,"('OK:
广宁水模型计算结束',',')")
write(5,"('OK:
理水模型计算结束',',')") ! 20110215 18:59
!
!
!
! owali 20110218 17:15