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

📄 global.bas

📁 一个较好的自适应遗传算法
💻 BAS
📖 第 1 页 / 共 5 页
字号:
   Close #1
  Next kkk
  '------------------------------------------------------
End Sub

'----------------------------------open-save pre -------------------------------------
Public Sub openfile_pre(filename$)
  Open filename$ For Input As #1
  
  For i = 1 To matchtime_num
   For j = 1 To wellnum + 1
    pressure_data(i, j) = -99
   Next j
  Next i
   
  While Not EOF(1)
   Input #1, ai, iday
   For j = 1 To wellnum + 1
    Input #1, pressure_data(ai, j)
   Next j
  Wend
  Close #1
End Sub

Public Sub savefile_pre(filename$)
  Static printuse()
  ReDim printuse(wellnum)
  BZ = 0
  Open filename$ For Output As #1
  For i = 1 To matchtime_num
   For j = 1 To wellnum + 1
    If Abs(pressure_data(i, j) + 99) > 0.0001 Then
     Print #1, outc$(i, "###0"); outc$(match_day(i), "#####0"); outc$(pressure_data(i, 1), "###0.00")
     For k = 2 To wellnum + 1
      printuse(k - 1) = pressure_data(i, k)
     Next k
     Call printgrid(wellnum, printuse(), "###0.00")
     BZ = 1
     GoTo 6
    End If
   Next j
6 Next i
  Close #1
  If BZ = 0 Then Kill filename$
End Sub

'----------------------------------open-save oth -------------------------------------
Public Sub openfile_oth(filename$)
  Open filename$ For Input As #1
  Input #1, trstd
  For i = 1 To 2
   Input #1, stdcon(i)
  Next i
  For i = 1 To 4
   Input #1, resol(i)
  Next i
  For i = 1 To 7
   Input #1, inics(i)
  Next i
  Close #1
End Sub

Public Sub savefile_oth(filename$)
  Open filename$ For Output As #1
  Print #1, outc$(trstd, "###0.0")
  For i = 1 To 2
   Print #1, outc$(stdcon(i), "###0.00");
  Next i
  Print #1,
  For i = 1 To 4
   Print #1, resol(i); "  ";
  Next i
  Print #1,
  For i = 1 To 7
   Print #1, outc$(inics(i), "#####0.0");
  Next i
  Print #1,
  Close #1
End Sub

'----------------------------------open-save his -------------------------------------
Public Sub openfile_his(filename$)
  Open filename$ For Input As #1
  Input #1, zsxs_pro, zsxs_prw, zsxs_prg, zsxs_inj, oil_md, oil_bo
  For i = 1 To wellnum
   Input #1, A$
   Input #1, zsxs_singlewell(i)
   For j = 1 To matchtime_num
    For k = 1 To history_cumwell_num
     Input #1, cum_well(i, j, k)
    Next k
   Next j
  Next i
  Close #1
End Sub

Public Sub savefile_his(filename$)
  Open filename$ For Output As #1
  Print #1, outc$(zsxs_pro, "##0.000"); outc$(zsxs_prw, "##0.000"); outc$(zsxs_prg, "##0.000"); outc$(zsxs_inj, "##0.000");
  Print #1, outc$(oil_md, "#0.000"); outc$(oil_bo, "#0.000")
  For i = 1 To wellnum
   Print #1, i, wellname$(i)
   Print #1, zsxs_singlewell(i)
   For j = 1 To matchtime_num
    For k = 1 To history_cumwell_num
     If k = 1 Then fort$ = "###0.000" Else fort$ = "########0.0"
     Print #1, outc$(cum_well(i, j, k), fort$);
    Next k
    Print #1,
   Next j
  Next i
  Close #1
End Sub

'----------------------------------open-save pvt -------------------------------------
Public Sub openfile_pvt(filename$)
  Open filename$ For Input As #1
  Input #1, pvt_bz
  For i = 1 To 4
   Input #1, PE_W(i)
  Next i
  Input #1, COMPR_M, COMPR_F, MD_G
  For i = 1 To 8
   Input #1, PE_O(i)
  Next i
  If pvt_bz = 1 Or pvt_bz = 3 Then linum = 1 Else linum = 2
  For i = 1 To linum
   Input #1, A$
   Input #1, oilpvt_num(i)
   If oilpvt_num(i) >= 1 Then
    For j = 1 To oilpvt_num(i)
     For k = 1 To 4
      Input #1, oil_pvt(i, j, k)
     Next k
    Next j
   End If
  Next i
  Input #1, A$
  Input #1, gaspvt_num
  If gaspvt_num >= 1 Then
   For j = 1 To gaspvt_num
    For k = 1 To 3
     Input #1, gas_pvt(j, k)
    Next k
   Next j
  End If
  Close #1
End Sub

Public Sub savefile_pvt(filename$)
  Open filename$ For Output As #1
  Print #1, Format$(pvt_bz, "#0")
  For i = 1 To 4
   If i = 2 Then frt$ = "0.000E+##" Else frt$ = "#0.00"
   Print #1, "  " + Format$(PE_W(i), frt$);
  Next i
  Print #1,
  Print #1, Format$(COMPR_M, "0.000E+##"); "  "; Format$(COMPR_F, "0.000E+##"); "  "; outc$(MD_G, "##0.000")
  For i = 1 To 8
   Select Case i
    Case 2, 3, 6, 7: frt$ = "0.000E+##"
    Case Else: frt$ = "##0.000"
   End Select
   Print #1, "  " + Format$(PE_O(i), frt$);
  Next i
  Print #1,
  If pvt_bz = 1 Or pvt_bz = 3 Then linum = 1 Else linum = 2
  For i = 1 To linum
   Print #1, "oil" + Str$(i)
   Print #1, Format$(oilpvt_num(i), "#0")
   If oilpvt_num(i) >= 1 Then
    For j = 1 To oilpvt_num(i)
     For k = 1 To 4
      Print #1, outc$(oil_pvt(i, j, k), oilpvt_frt$(k));
     Next k
     Print #1,
    Next j
   End If
  Next i
  Print #1, "gas"
  Print #1, Format$(gaspvt_num, "#0")
  If gaspvt_num >= 1 Then
   For j = 1 To gaspvt_num
    For k = 1 To 3
     Print #1, outc$(gas_pvt(j, k), gaspvt_frt$(k));
    Next k
    Print #1,
   Next j
  End If
  Close #1
End Sub

'----------------------------------open-save krpc -------------------------------------
Public Sub openfile_krpc(filename$)
  Open filename$ For Input As #1
  Input #1, FRAC_kr
  For i = 1 To 4
   For j = 1 To 9
    Input #1, end_point(i, j)
   Next j
  Next i
  Input #1, A$
  Input #1, krownum_m
  If krownum_m >= 1 Then
   For j = 1 To krownum_m
    For k = 1 To 5
     Input #1, krow_m(j, k)
    Next k
   Next j
  End If
  Input #1, A$
  Input #1, krognum_m
  If krognum_m >= 1 Then
   For j = 1 To krognum_m
    For k = 1 To 5
     Input #1, krog_m(j, k)
    Next k
   Next j
  End If
  If FRAC_kr = -1 Then
   Input #1, A$
   Input #1, krownum_f
   If krownum_f >= 1 Then
    For j = 1 To krownum_f
     For k = 1 To 5
      Input #1, krow_f(j, k)
     Next k
    Next j
   End If
   Input #1, A$
   Input #1, krognum_f
   If krognum_f >= 1 Then
    For j = 1 To krognum_f
     For k = 1 To 5
      Input #1, krog_f(j, k)
     Next k
    Next j
   End If
  End If
  Close #1
End Sub

Public Sub savefile_krpc(filename$)
  Open filename$ For Output As #1
  Print #1, FRAC_kr
  For i = 1 To 4
   For j = 1 To 9
    Print #1, outc$(end_point(i, j), "###0.0000");
   Next j
   Print #1,
  Next i
  Print #1, "satwo_m"
  Print #1, Format$(krownum_m, "#0")
  If krownum_m >= 1 Then
   For j = 1 To krownum_m
    For k = 1 To 5
     Print #1, outc$(krow_m(j, k), kr_frt$(k));
    Next k
    Print #1,
   Next j
  End If
  Print #1, "satgo_m"
  Print #1, Format$(krognum_m, "#0")
  If krognum_m >= 1 Then
   For j = 1 To krognum_m
    For k = 1 To 5
     Print #1, outc$(krog_m(j, k), kr_frt$(k));
    Next k
    Print #1,
   Next j
  End If
  If FRAC_kr = -1 Then
   Print #1, "satwo_f"
   Print #1, Format$(krownum_f, "#0")
   If krownum_f >= 1 Then
    For j = 1 To krownum_f
     For k = 1 To 5
      Print #1, outc$(krow_f(j, k), kr_frt$(k));
     Next k
     Print #1,
    Next j
   End If
   Print #1, "satgo_f"
   Print #1, Format$(krognum_f, "#0")
   If krognum_f >= 1 Then
    For j = 1 To krognum_f
     For k = 1 To 5
      Print #1, outc$(krog_f(j, k), kr_frt$(k));
     Next k
     Print #1,
    Next j
   End If
  End If
  Close #1
End Sub
'----------------------------------open-save wel -------------------------------------
Public Sub openfile_wel(filename$)
  Open filename$ For Input As #1
  Input #1, staok_name$
  Input #1, A$
  For i = 1 To wellnum
   Input #1, B
   For j = 1 To layernum
    Input #1, kh_value(i, j)
   Next j
  Next i
  Input #1, A$
  Input #1, sk_time_num
  For i = 1 To sk_time_num
   Input #1, sk_tnum(i), sk_well_num(i)
   For j = 1 To sk_well_num(i)
    Line Input #1, A$
    sk_jh(i, j) = val(Left$(A$, 4))
    sk_welcond$(i, j) = Trim$(Mid$(A$, 6))
   Next j
  Next i
  Close #1
End Sub

Public Sub savefile_wel(filename$)
  Static printuse()
  ReDim printuse(layernum)
  Open filename$ For Output As #1
  Print #1, staok_name$
  Print #1, "KH值"
  For i = 1 To wellnum
   Print #1, i
   For j = 1 To layernum
    printuse(j) = kh_value(i, j)
   Next j
   Call printgrid(layernum, printuse(), "######0")
  Next i
  Print #1, "射孔状况"
  Print #1, sk_time_num
  For i = 1 To sk_time_num
   Print #1, sk_tnum(i), sk_well_num(i)
   For j = 1 To sk_well_num(i)
    Print #1, outc$(sk_jh(i, j), "###0") + " " + sk_welcond$(i, j)
   Next j
  Next i
  Close #1
End Sub

Public Sub re_modfile()
  Call openfile_mod(maindrive$ + "\easysim\model\" & mod_filename$ & ".MOD")
  Call js_matchtime
  'If mod_filename$ <> "" And Dir(maindrive$+"\easysim\model\" & mod_filename$ & ".MOD") <> "" Then
  '  If griddxnum <= 1 Or griddynum <= 1 Then mod_filename$ = ""
  'Else
  '  mod_filename$ = ""
  'End If

  'If mod_filename$ <> "" Then
  ' If wellnum >= 1 Then
  '  main1.singlewell.Enabled = -1
  '  main1.prohistory.Enabled = -1
  '  main1.pressure.Enabled = -1
  '  main1.Toolbar1.Buttons(5).Enabled = -1
  '  main1.Toolbar1.Buttons(6).Enabled = -1
  '  main1.Toolbar1.Buttons(8).Enabled = -1
  ' Else
  '  main1.singlewell.Enabled = 0
  '  main1.prohistory.Enabled = 0
  '  main1.pressure.Enabled = 0
  '  main1.Toolbar1.Buttons(5).Enabled = 0
  '  main1.Toolbar1.Buttons(6).Enabled = 0
  '  main1.Toolbar1.Buttons(8).Enabled = 0
  ' End If
  ' main1.stadata.Enabled = -1
  ' main1.Toolbar1.Buttons(4).Enabled = -1
  'Else
  ' main1.stadata.Enabled = 0
  ' main1.singlewell.Enabled = 0
  ' main1.prohistory.Enabled = 0
  ' main1.pressure.Enabled = 0
 '
  ' main1.Toolbar1.Buttons(4).Enabled = 0
 '  main1.Toolbar1.Buttons(5).Enabled = 0
 '  main1.Toolbar1.Buttons(6).Enabled = 0
 '  main1.Toolbar1.Buttons(8).Enabled = 0
 ' End If
End Sub

Public Sub printgrid(printnum, printdim(), unitfor$)
  line_number = Int((printnum - 1) / 10) + 1
  If line_number = 1 Then
   For i = 1 To printnum
    Print #1, outc$(printdim(i), unitfor$);
   Next i
 

⌨️ 快捷键说明

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