zmk
2024-08-28 1ae38ab34bcbdff622c7623119ee54bad419f4ed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
import flopy.utils.binaryfile as bf
import Base as base
import numpy as np
 
#给水度
water_u = 0.2
#研究区域面积平方米
water_F= float(5652 * 500 *500)
#有效计算单元格
water_invalid_cell =5652
#研究区域平方千米
water_F_KM= 680.250
 
pyq_cells_total =2721           
 
 
#地下水蓄变量
def get_grd_storage(model_name,per1,per2):       
    arr = np.loadtxt(base.xs_mp_path, dtype=int)
    pyq_cells=[]
    k=0
    for i in range(len(arr)):
           for j in range(len(arr[i])):  
               if arr[i][j] == 1:  
                   k+=1
                   pyq_cells.append((i,j))
 
    dir = base.model_dir + model_name  + "\\modflow.head" 
 
    if model_name=="202001_202212":
         dir = base.baseModel2  + "\\modflow.head" 
  
    head = bf.HeadFile(dir)
    alldata = head.get_alldata() 
    
    #初始水位数据
    z_start = alldata[int(per1+1)*3-3,0,:,:] 
    #结束水位数据
    
    z_end = alldata[int(per2+1)*3-1,0,:,:] 
    
    z_start[(z_start<=0)] = 0 
    z_end[(z_end<=0)] = 0 
    
    # z_start_avg = float(np.sum(z_start)/5652)
    # z_end_avg = float(np.sum(z_end)/5652)
    
    z_start_total = 0
    z_end_total = 0
    for item in pyq_cells:
        i = item[0]
        j = item[1]
        z_start_total  += z_start[i,j]
        z_end_total += z_end[i,j]
    
    z_start_avg = z_start_total/2721
    z_end_avg = z_end_total/2721
    
    #ΔW=100·(h1-h2)·μ·F/t
    year = (per2+1-per1)/12
    # print(year)
    storage = 100 * (z_start_avg-z_end_avg) * water_u * water_F_KM /year
    return storage
 
 
 
#相对均衡差 Q1 
#Q总补-Q总排±ΔW=Χ    
# Χ/Q总补 *100% 
def get_grd_relative_equ(Q1, Q2,w):
   x=  ( Q1-Q2) + w 
   y =  x/Q1
   return y