⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.bas

📁 一个较好的自适应遗传算法
💻 BAS
📖 第 1 页 / 共 5 页
字号:
Attribute VB_Name = "GLOBAL"
Public Const time_max = 500        '最大时间步
Public Const well_max = 600        '最大井数
Public Const wellname_max = 8      '最大井名字符数
Public Const wellelsename_max = 15 '最大井别名字符数
Public Const gridx_max = 100       '最大X网格数   ?
Public Const gridy_max = 100       '最大Y网格数   ?
Public Const layer_max = 20        '最大层数      46?
Public Const gridxyz_max = 60000   '最大网格数    ?
Public Const duannum_max = 45      '最大设置断层线数  ?
Public Const duanpoint_max = 50    '断层线设置最多点数
Public Const useless_layernum = gridx_max * gridy_max  '每层最大无效网格数
Public Const staticnum_max = 20    '油层参数场数据参数最多个数
Public Const lsjsregion_max = 10   '最多离散计算数
Public Const rtype_max = 20        '最多岩石类型数
Public Const otype_max = 2         '最多油类型数
Public Const nreg_max = 5          '最多分区数
Public Const sat_max = 35          '最多相渗表点个数
Public Const pvt_max = 40          '最多PVT表点个数
Public Const txyz_max = 500        'TX、TY、TZ最多修正个数
Public Const grnum_max = 8         '绘制曲线总数
Public Const grpoint_max = 250     '曲线最多点数
Public Const well_color1 = &HFFFFC0 '不分类型
Public Const well_color2 = &HFF&    '生产井
Public Const well_color3 = &HFF0000 '注入井
Public Const well_color4 = &HFFFFFF '关井
Public Const kriging_MAXSAM = 120   'maximum number of data points to use in one kriging system
Public Const kriging_MAXDIS = 64    'maximum number of discretization points per block
Public Const kriging_MAXNST = 4     'maximum number of nested structures
Public Const history_cumwell_num = 5

Type owf      '字段个数:42   记录长度:237
 JH As String * 13        '1井号                  C  13  0
 DYMC As String * 2       '2 单元名称             C  2   0
 CYFS As String * 1       '3 生产方式(C/P)        C  1   0
 SCSJ As String * 5       '4 生产时间             N  5   0
 BJ1 As String * 3        '5 泵径1                N  3   0
 BGSD As String * 6       '6 泵挂深度             N  6   1
 BLB As String * 1        '7 泵的类别             C  1   0
 BJ2 As String * 3        '8 泵径2                N  3   0
 cc As String * 4         '9 冲程/油嘴            N  4   1
 CC1 As String * 6        '10 冲次/油压(MPa)      N  6   2
 ty As String * 6         '11 套压(MPa)           N  6   2
 YCYL As String * 6       '12 月产油              N  6   0
 YCQL As String * 7       '13 月产气(百方)        N  7   0
 YCSL As String * 6       '14 月产水              N  6   0
 NCYL As String * 7       '15 年产油              N  7   0
 NCQL As String * 8       '16 年产气(百方)        N  8   0
 NCSL As String * 7       '17 年产水              N  7   0
 LJCYL As String * 8      '18 累积产油            N  8   0
 LJCQL As String * 9      '19 累积产气(百方)      N  9   0
 LJCSL As String * 8      '20 累积产水            N  8   0
 BZFDL As String * 1      '21 标识符(D/L)         C  1   0
 DYM As String * 7        '22 动液面/流压(MPa)    N  7   2
 BZFJP As String * 1      '23 标识符(J/P)         C  1   0
 JYM As String * 7        '24 静液面/静压(MPa)    N  7   2
 YYBZ As String * 6       '25 原油比重(吨/方)     N  6   3
 DMND As String * 6       '26 地面粘度(mPa.s)     N  6   0
 SKHD As String * 7       '27 水总矿化度(ppm)     N  7   0
 SSX As String * 1        '28 地下水水型          C  1   0
 DCWU As String * 4       '29 层位顶              C  4   0
 DCWD As String * 4       '30 层位底              C  4   0
 YXHD As String * 5       '31 有效厚度            N  5   1
 ZBSD As String * 6       '32 油层中深            N  6   1
 BY As String * 7         '33 补油(吨)            N  7   0
 BQ As String * 8         '34 补气(百方)          N  8   0
 bs As String * 7         '35 补水(方)            N  7   0
 JLBZF As String * 4      '36 井类标识符          C  4   0
 BZ As String * 3         '37 备注                C  3   0
 SCNY As String * 4       '38 生产年月            C  4   0
 JLJCY As String * 8      '39 井累产油            N  8   0
 JLJCQ As String * 9      '40 井累产气            N  9   0
 JLJCS As String * 8      '41 井累产水            N  8   0
 JLJZS As String * 8      '42 井累注水            N  8   0
End Type
Type WWF         '字段个数:72   记录长度:338
 JH As String * 13        '1井号
 DYMC As String * 2       '2 单元名称
 ZSFS As String * 1       '3 注水方式
 ZSSJ As String * 5       '4 注水时间(DDhh)
 DCWU As String * 4
 DCWD As String * 4
 SCHD As String * 5
 RPZSL As String * 4
 BYL As String * 6
 TYL As String * 6
 YYL As String * 6
 YZSL As String * 6
 NZSL As String * 7
 LJZSL As String * 8
 BZSL As String * 7
 JBBZF As String * 4
 D1CDU As String * 4
 D1CDD As String * 4
 D1CDSCHD As String * 4
 D1CDXZ As String * 1
 D1CDSZ1 As String * 4
 D1CDSZ2 As String * 4
 D1CDRPSL As String * 3
 D1CDYZSL As String * 5
 D1CDNZSL As String * 6
 D1CDLZSL As String * 7
 D2CDU As String * 4
 D2CDD As String * 4
 D2CDSCHD As String * 4
 D2CDXZ As String * 1
 D2CDSZ1 As String * 4
 D2CDSZ2 As String * 4
 D2CDRPSL As String * 3
 D2CDYZSL As String * 5
 D2CDNZSL As String * 6
 D2CDLZSL As String * 7
 D3CDU As String * 4
 D3CDD As String * 4
 D3CDSCHD As String * 4
 D3CDXZ As String * 1
 D3CDSZ1 As String * 4
 D3CDSZ2 As String * 4
 D3CDRPSL As String * 3
 D3CDYZSL As String * 5
 D3CDNZSL As String * 6
 D3CDLZSL As String * 7
 D4CDU As String * 4
 D4CDD As String * 4
 D4CDSCHD As String * 4
 D4CDXZ As String * 1
 D4CDSZ1 As String * 4
 D4CDSZ2 As String * 4
 D4CDRPSL As String * 3
 D4CDYZSL As String * 5
 D4CDNZSL As String * 6
 D4CDLZSL As String * 7
 D5CDU As String * 4
 D5CDD As String * 4
 D5CDSCHD As String * 4
 D5CDXZ As String * 1
 D5CDSZ1 As String * 4
 D5CDSZ2 As String * 4
 D5CDRPSL As String * 3
 D5CDYZSL As String * 5
 D5CDNZSL As String * 6
 D5CDLZSL As String * 7
 BZ As String * 3
 SCNY As String * 4
 JLJCY As String * 8
 JLJCQ As String * 9
 JLJCS As String * 8
 JLJZS As String * 8
End Type

Global maindrive$                                                                    'easysim所在目录
Global formbl_x As Single, formbl_y As Single
Global loadtab_bz, okcancel_bz, mainload_bz As Integer                               '调用表格窗体标志

'----------- draw_line ---------------
Global yaxis_num As Integer
Global px1, py1, px2, py2 As Single
Global xaxis_type, xaxis_visible, TRborder_visible As Integer
Global xaxis_min, xaxis_max, xaxis_interval, twoyaxis_interval As Single
Global title_name$, xaxis_name$, xaxis_format$
Global title_fontsize, axis_fontsize, axisname_fontsize, grnote_fontsize As Single
   
Global yaxis_grnum(), yaxis_type() As Integer
Global yaxis_min(), yaxis_max(), yaxis_interval() As Single
Global yaxis_name$(), yaxis_format$()
   
Global grpoint(), gr_type(), grnote_visible(), grnote_LR() As Integer
Global grnote_name$()
Global Lstyle(), Lwidth(), Pstyle(), Pwidth() As Integer
Global Lcolor(), Pcolor() As Single

Global grdatx(), grdaty() As Single
Global grdatx_str$()
Global objBackColor
'----------- well.frm ---------------
Global FRAC_mod As Integer                                       '-1为双孔介质
Global qkname$, oilfield_bz$, start_time$, end_time$, rem1$, rem2$, rem3$
Global caldays, interval_time As Integer                     '每月计算天数,时间间隔
Global reserves, vpor As Single                              '地质储量,孔隙体积
Global wellx(well_max), welly(well_max), wellname$(well_max) '井的X,Y距离,井名
Global wellname_other$(well_max, 2)                          '井别名
Global wellnum As Integer                                    '井数
Global gridx As Single                                       '油藏长度
Global gridy As Single                                       '油藏宽度
Global layernum As Integer                                   '油藏层数
Global griddx(gridx_max + 1), griddy(gridy_max + 1)          'X,Y各网格块尺寸
Global griddxnum As Integer                                  'X方向网格数
Global griddynum As Integer                                  'Y方向网格数
Global duannum As Integer                                    '断层线数目
Global duanpointnum(duannum_max) As Integer                  '各断层线断点数
Global duanx(duannum_max, duanpoint_max), duany(duannum_max, duanpoint_max)   '各断层线断点距离
Global duanlayer(duannum_max, layer_max) As Integer          '各断层线层位判断:-1:yes,0:no
Global duancor(duannum_max) As Integer                       '各断层线颜色
Global duan_color(duannum_max)
Global uselessgridnum(), equbz As Integer                    '无效网格数目
Global uselessgridx(), uselessgridy()                        '无效网格所在网格号
Global bkx1, bkx2, bky1, bky2 As Integer                     '网格绘制范围
Global xmidpoint, ymidpoint, diffdx, diffdy As Integer       '用于绘制网格
'----------- static.frm ----------
Global static_num As Integer
Global static_lsnum As Integer                               '离散点数
Global static_lsdata() As Single                             '离散点值:点数,参数(井号、X坐标、Y坐标、HTOP、DZ1、DZ2、…、DZNET1、…)
Global griddata_static_condition(staticnum_max) As Integer      '参数场网格值赋值状况:0:不赋值;1:所有层一个值;2:一层一个值;3:DZ倍数;4:KX倍数;5:一个网格一个值
Global static_5_condition() As Integer                       '情况5网格值赋值状况:0:不赋值;1:一个值;2:部分赋值;3:完全赋值
Global griddata_one(staticnum_max) As Single                    '网格值(1)
Global griddata_layer() As Single                            '网格值(2):参数(HTOP、DZ1、DZ2、…、DZNET1、…)
Global griddata_dzmult  As Single                            '网格值(3)
Global griddata_kxmult(4)  As Single                         '网格值(4)
Global griddata_static() As Single                           '网格值(5):X,Y,参数(HTOP、DZ1、DZ2、…、DZNET1、…)
Global t_modifynum(10) As Integer
'TX、TY、TZ、TXF、TYF、TZF、TXMAEX、TYMAEX、TZMAEX、TCMAEX修正点数
Global t_xyz(1 To 10, 1 To txyz_max, 1 To 7) As Integer       'TX、TY、TZ修正XYZ坐标:(TX、TY、TZ),点数,坐标(X1、X2、Y1、Y2、Z1、Z2)
                                                             '运算符:1+;2-;3×4÷5=
Global t_value(1 To 10, 1 To txyz_max) As Single                        'TX、TY、TZ修正值:(TX、TY、TZ),点数
Global oilregion()                ' As Single                                 '油类型分区:X,Y,层位
Global rockregion()               'As Integer                               '岩石类型分区:X,Y,层位
Global lsjsregion()               'As Integer                               '离散计算分区:X,Y,层位
Global printregion()              'As Integer                              '打印摘要分区:X,Y,层位
Global lsjsregion_bz As Integer                              '离散计算分区标志:0,only one, other:>1
Global oname$(staticnum_max), unitformat$(staticnum_max)           '静态场参数名、参数输出格式
Global current_lsd, lsnum_max As Integer                     '目前设置或修改离散点、最多离散点点数
Global static_selcount, layer_selcount As Integer            '选中离散计算数目
Global static_sel(staticnum_max), layer_sel(layer_max) As Integer  '用于选中离散计算
Global add2equ_bz, cur_layer, cur_static  As Integer           '1+;2-;3×4÷5=
Global modify_value
Global layer_data(layer_max) As Single
Global lsjs_x(), lsjs_y(), lsjs_data() As Single      '用于离散计算
Global lsjs_method As Integer                         '离散计算方法
'--------  file ------------
Global mod_filename$, analysis_filename$, analysis_filename2$, mademod_filename$, newfilename$, fenmod_filename$ '确定模型、分析、建立模型文件名
Global nnstep As Integer, fenfile_newbz As Integer
Global rtype_num, api_num, prreg_num As Integer
Global rtype_val(), api_val(), prreg_val()
Global zone_data() As Integer   '区域块设置信息
Global krselnum As Integer
Global krsel$(1 To rtype_max)
Global equalini_bz As Integer '平衡初始化标志  -1/0:平衡/非平衡
'--------  dxq ------------
Global forplot_x1, forplot_x2, forplot_y1, forplot_y2 As Integer   '用于绘制等值线(区)坐标范围
Global well_condition(well_max) As Integer    '用于绘制等值线(区)井状态:0不显示;1不分类型显示;2生产井;3注入井;4关井
Global red(256), green(256), blue(256) As Integer
Global nodevalues() As Single
Global useless_zone() As Integer
Global useless_zone_num As Integer
Global useless_use() As Integer
Global uscor
Global jmq_zone() As Integer
Global jmq_zone_num As Integer
Global jmq_use() As Integer
Global jmq_pointnum() As Integer
Global jmq_pointx() As Integer
Global jmq_pointy() As Integer
Global drawpm_mode As Integer
'--------  history ------------
Global matchtime_num, match_day() As Integer
Global match_ym$()
Global zsxs_pro, zsxs_prw, zsxs_prg, zsxs_inj As Single
Global oil_md, oil_bo As Single
Global zsxs_singlewell(), cum_well() As Single
Global day_js() As Single     '日产量  1:油,t;2:水,方;3:注水,方;4:气,方
'--------  pressure ------------
Global pressure_data() As Single
'-------- onewell ------------
Global kh_value() As Single
Global sk_time_num As Integer
Global sk_tnum(), sk_well_num() As Integer
Global sk_jh() As Integer
Global sk_welcond$(), staok_name$
'-------- other ------------
Global trstd, stdcon(2), inics(7), resol(4) As Single
'-------- pvt ------------
Global PE_W(1 To 4), COMPR_M, COMPR_F, MD_G, PE_O(1 To 8) As Single
Global gas_pvt(1 To pvt_max, 1 To 3), oil_pvt(1 To 2, 1 To pvt_max, 1 To 4) As Single
Global pvt_bz As Integer  '1:WO;2:WO2;3:BLK;4:BLK2
Global gaspvt_frt$(3), oilpvt_frt$(4)
Global gaspvt_num, oilpvt_num(2) As Integer
'-------- krpc ------------
Global FRAC_kr As Integer
Global krow_m(1 To sat_max, 1 To 5), krog_m(1 To sat_max, 1 To 5) As Single
Global krow_f(1 To sat_max, 1 To 5), krog_f(1 To sat_max, 1 To 5) As Single
Global end_point(1 To 4, 1 To 9) As Single
Global kr_frt$(5)
Global krownum_m, krognum_m As Integer
Global krownum_f, krognum_f As Integer
'-------- analysis file ------------
Global nreg_fx As Integer  '分区数
Global ifracbz As Integer     '0/1 单孔/双孔
Global day_js_fx() As Single     '日产量  1:油,t;2:水,方;3:注水,方;4:气,方
Global pressure_data_fx() As Single
Global oil_md_fx, oil_bo_fx As Single
Global clvar_sim_reg(0 To 2, 1 To 6, 0 To nreg_max) As Double
Rem 计算储量等clvar_sim_reg(i,j,k)
Rem i:0-全区;1-基质;2-裂缝
Rem j:1-原始水量,方;2-原始油量,方;3-原始气量,方;
Rem   4-原始自由气量,方;5-压力,MPa;6-孔隙体积,方。
Rem k: 分区号,0-合计。
Global minmax(4, 2) As Single         'P,SW,SG,SO min-max
Global changvor() As Single
Global pslayer() As Single      '(1 To 2, 1 To matchtime_num, 0 To layernum) p,so
Global vorlayer() As Single   '基质单层孔隙体积
Global cal_max(6) As Single   'Qp,Qi,Cump,Cumi,fw,Pwf
Global cal_max_g(4) As Single 'Qpg,Qig,Cumpg,Cumig

Global changvor_frac() As Single
' his_analysis
Global pwell_num() As Integer, iwell_num() As Integer
Global pxzb_12(1 To 2), pyzb_12(1 To 5, 1 To 2) As Single
Global hisdata2_cal() As Single
Global drawline_bz_com As Integer
Global hmid_res() As Single
Global dznet_res() As Single
Global hmid_js(), dznet_js() As Single
Global drawpm_top, drawpm_bottom As Single
'-------- md predict-file ------------
Global wellnum_pre As Integer                           '预测井数
Global end_time_pre$, rem1_pre$, rem2_pre$
Global interval_time_pre As Integer                     '预测时间间隔
Global predicttime_num, predict_day() As Integer
Global predict_ym$()
Global dayjsnum_pre As Integer
Global day_pre() As Integer, day_js_pre() As Single    '时间,日产量  1:液,方;2:注水,方
Global sk_timenum_pre As Integer
Global sk_kh() As Single
'-------- md new predict-file ------------
Global modfile_new$, pvtfile_new$, stafile_new$, othfile_new$
Global krfilenum_new As Integer
Global krfile_new$(1 To rtype_max)
'-------- print ------------
Global print_title$
Global print_bz As Integer
'-------- scan_pic ------------
Global picture_name$
Global blc_setbz As Integer  '1:设置(未设置),0:删除(已设置)
Global ml_setbz As Integer  '1:设置(未设置),0:删除(已设置)
Global blc_zbx(2), blc_zby(2)   '比例尺两点坐标
Global blc_bl  '比例尺比例
Global ml_zbx(4), ml_zby(4)  '模拟区域四点坐标
Global image_xa, image_xb, image_ya, image_yb   'image1坐标
' xa      xb
'  |      |
'----------- ya
'  |image1|
'----------- yb
'  |      |

Function outc$(innum, formt$)
  Static ii
  If Abs(innum) <= 0.000000001 And InStr(formt$, ".") = 0 Then
    outc$ = Space(Len(formt$) - 1) + "0"
  Else
   ii = Len(formt$) - Len(Format$(innum, formt$))
   If ii <= 0 Then ii = 1
   outc$ = Space(ii) + Format$(innum, formt$)
  End If
End Function

Function outc2$(inch$, num)
  Static ii
  If Len(inch$) >= num Then
   outc2$ = Left$(inch$, num)
  Else
   ii = num - Len(inch$)
   If ii <= 0 Then ii = 1
   outc2$ = inch$ + Space(ii)
  End If
End Function

Function plotx(resx)
   plotx = bkx1 + 12 + ((bkx2 - 7) - (bkx1 + 12)) * resx / gridx
End Function

Function ploty(resy)
   ploty = bky1 + 13 + ((bky2 - 8) - (bky1 + 13)) * resy / gridy
End Function

Function fx_plotx(resx)
   fx_plotx = bkx1 + 5 + ((bkx2 - 5) - (bkx1 + 5)) * resx / gridx
End Function

Function fx_ploty(resy)
   fx_ploty = bky1 + 5 + ((bky2 - 5) - (bky1 + 5)) * resy / gridy
End Function

Function draw_plotx(resx)
   draw_plotx = forplot_x1 + (forplot_x2 - forplot_x1) * resx / gridx
End Function

Function draw_ploty(resy)
   draw_ploty = forplot_y1 + (forplot_y2 - forplot_y1) * resy / gridy
End Function

Function resx(plotx)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -