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

📄 global.bas

📁 一个较好的自适应遗传算法
💻 BAS
📖 第 1 页 / 共 5 页
字号:
   Next i
  End If
  '
  Print #1, "井位数据"
  Print #1, wellnum
  If wellnum >= 1 Then
   For i = 1 To wellnum
    Print #1, outc$(wellx(i) / formbl_x, "####0.00"); outc$(welly(i) / formbl_y, "####0.00"); "  "; outc2$(UCase$(Trim$(wellname$(i))), wellname_max)
   Next i
  End If
  '
  Print #1, "断层线数据"
  Print #1, duannum
  If duannum >= 1 Then
   For i = 1 To duannum
    Print #1, duanpointnum(i), duancor(i)
    For j = 1 To duanpointnum(i)
     Print #1, outc$(duanx(i, j) / formbl_x, "####0.00"); outc$(duany(i, j) / formbl_y, "####0.00")
    Next j
   Next i
  End If
  Close #1
End Sub

'----------------------------------open-save sta -------------------------------------
Public Sub openfile_sta(filename$)
  Open filename$ For Input As #1
  ' 离散点
  Input #1, A$
  Input #1, static_lsnum
  If static_lsnum >= 1 Then
   For i = 1 To static_lsnum
    '序号,井号,X坐标,Y坐标,HTOP
    Input #1, ii, static_lsdata(i, 1), static_lsdata(i, 2), static_lsdata(i, 3), static_lsdata(i, 4)
    'DZ1,…
    For j = 2 To static_num
     For k = 1 To layernum
      Input #1, static_lsdata(i, static_lsdim(k, j))
     Next k
    Next j
   Next i
  End If
    
  ' 网格值
  Input #1, A$
  For i = 1 To static_num
   Input #1, A$
   Input #1, griddata_static_condition(i)
   Select Case griddata_static_condition(i)
    Case 0:
     For l = 1 To layernum
      For j = 1 To griddynum
       For k = 1 To griddxnum
        griddata_static(k, j, static_lsdim(l, i) - 3) = -99
       Next k
      Next j
     Next l
    Case 1:
     Input #1, griddata_one(i)
     If i = 1 Then
      For j = 1 To griddynum
       For k = 1 To griddxnum
        griddata_static(k, j, 1) = griddata_one(i)
       Next k
      Next j
     Else
      For l = 1 To layernum
       For j = 1 To griddynum
        For k = 1 To griddxnum
         griddata_static(k, j, static_lsdim(l, i) - 3) = griddata_one(i)
        Next k
       Next j
      Next l
     End If
    Case 2:
     For l = 1 To layernum
      Input #1, griddata_layer(static_lsdim(l, i) - 3)
      For j = 1 To griddynum
       For k = 1 To griddxnum
        griddata_static(k, j, static_lsdim(l, i) - 3) = griddata_layer(static_lsdim(l, i) - 3)
       Next k
      Next j
     Next l
    Case 3:
     Input #1, griddata_dzmult
     For l = 1 To layernum
      For j = 1 To griddynum
       For k = 1 To griddxnum
        griddata_static(k, j, static_lsdim(l, 3) - 3) = griddata_dzmult * griddata_static(k, j, static_lsdim(l, 2) - 3)
       Next k
      Next j
     Next l
    Case 4:
     If i = 5 Then          'KY
      Input #1, griddata_kxmult(1)
      For l = 1 To layernum
       For j = 1 To griddynum
        For k = 1 To griddxnum
         griddata_static(k, j, static_lsdim(l, 5) - 3) = griddata_kxmult(1) * griddata_static(k, j, static_lsdim(l, 4) - 3)
        Next k
       Next j
      Next l
     End If
     If i = 6 Then          'KZ
      Input #1, griddata_kxmult(2)
      For l = 1 To layernum
       For j = 1 To griddynum
        For k = 1 To griddxnum
         griddata_static(k, j, static_lsdim(l, 6) - 3) = griddata_kxmult(2) * griddata_static(k, j, static_lsdim(l, 4) - 3)
        Next k
       Next j
      Next l
     End If
     If i = 12 Then          'KYF
      Input #1, griddata_kxmult(3)
      For l = 1 To layernum
       For j = 1 To griddynum
        For k = 1 To griddxnum
         griddata_static(k, j, static_lsdim(l, 12) - 3) = griddata_kxmult(3) * griddata_static(k, j, static_lsdim(l, 11) - 3)
        Next k
       Next j
      Next l
     End If
     If i = 13 Then          'KZF
      Input #1, griddata_kxmult(4)
      For l = 1 To layernum
       For j = 1 To griddynum
        For k = 1 To griddxnum
         griddata_static(k, j, static_lsdim(l, 13) - 3) = griddata_kxmult(4) * griddata_static(k, j, static_lsdim(l, 11) - 3)
        Next k
       Next j
      Next l
     End If
    Case 5:
     If i = 1 Then
      Input #1, static_5_condition(1)
      For j = 1 To griddynum
       For k = 1 To griddxnum
        Input #1, griddata_static(k, j, 1)
       Next k
      Next j
     Else
      For l = 1 To layernum
       Input #1, static_5_condition(static_lsdim(l, i) - 3)
       Select Case static_5_condition(static_lsdim(l, i) - 3)
        Case 0:
        Case 1:
         Input #1, inputdata
         For j = 1 To griddynum
          For k = 1 To griddxnum
           griddata_static(k, j, static_lsdim(l, i) - 3) = inputdata
          Next k
         Next j
        Case 2, 3:
         For j = 1 To griddynum
          For k = 1 To griddxnum
           Input #1, griddata_static(k, j, static_lsdim(l, i) - 3)
          Next k
         Next j
       End Select
      Next l
     End If
   End Select
  Next i
  
  ' TX、TY、TZ、TXF、TYF、TZF、TXMAEX、TYMAEX、TZMAEX、TCMAEX修正值
  If FRAC_mod = -1 Then int_num = 10 Else int_num = 3
  Input #1, A$
  For i = 1 To int_num
   Input #1, t_modifynum(i)
   If t_modifynum(i) <> 0 Then
    For j = 1 To t_modifynum(i)
     For k = 1 To 7
      Input #1, t_xyz(i, j, k)
     Next k
     Input #1, t_value(i, j)
    Next j
   End If
  Next i
  
  
  Call openfile_sta_fq(1, oilregion())    ' 油类型分区数据
  Call openfile_sta_fq(2, rockregion())   ' 岩石类型分区数据
  Call openfile_sta_fq(3, lsjsregion())   ' 离散计算分区数据
  Call openfile_sta_fq(4, printregion())  ' 打印摘要分区数据
  
  Close #1
End Sub

Public Sub savefile_sta(filename$)
  Static printuse()
  ReDim printuse(gridx_max)
  
  Dim oname_pr$(10)
  oname_pr$(1) = "HTOP":  oname_pr$(2) = "DZ"
  oname_pr$(3) = "DZNET": oname_pr$(4) = "KX"
  oname_pr$(5) = "KY": oname_pr$(6) = "KZ"
  oname_pr$(7) = "PHI": oname_pr$(8) = "P"
  oname_pr$(9) = "SO"
  
  Open filename$ For Output As #1
  
  Print #1, "离散点"
  Print #1, static_lsnum
  If static_lsnum >= 1 Then
   For i = 1 To static_lsnum
    '序号,井号,X坐标,Y坐标,HTOP
    Print #1, outc$(i, "###0"); outc$(static_lsdata(i, 1), "###0");
    Print #1, outc$(static_lsdata(i, 2), "####0.00"); outc$(static_lsdata(i, 3), "####0.00");
    Print #1, outc$(static_lsdata(i, 4), "##" & unitformat$(1))
    'DZ1,…
    For j = 2 To static_num
     For k = 1 To layernum
      printuse(k) = static_lsdata(i, static_lsdim(k, j))
     Next k
     Call printgrid(layernum, printuse(), "##" & unitformat$(j))
    Next j
   Next i
  End If
    
  Print #1, "网格值"
  For i = 1 To static_num
   If griddata_static_condition(i) = 5 Then
    If i = 1 Then
     If static_5_condition(1) = 0 Then griddata_static_condition(i) = 0
     If static_5_condition(1) = 1 Then
      griddata_static_condition(i) = 1
      griddata_one(i) = griddata_static(1, 1, 1)
     End If
    Else
     ifjs1 = True: ifjs2 = True
     For j = 1 To layernum
      ifjs1 = ifjs1 And static_5_condition(static_lsdim(j, i) - 3) = 0
      ifjs2 = ifjs2 And static_5_condition(static_lsdim(j, i) - 3) = 1
     Next j
     If ifjs1 Then griddata_static_condition(i) = 0
     If ifjs2 Then
      If layernum > 1 Then
       tempdata = griddata_static(1, 1, static_lsdim(1, i) - 3)
       For j = 2 To layernum
        If tempdata <> griddata_static(1, 1, static_lsdim(j, i) - 3) Then
         griddata_static_condition(i) = 2
         For k = 1 To layernum
          griddata_layer(static_lsdim(k, i) - 3) = griddata_static(1, 1, static_lsdim(k, i) - 3)
         Next k
         GoTo 7
        End If
       Next j
      End If
      griddata_static_condition(i) = 1
      griddata_one(i) = griddata_static(1, 1, static_lsdim(1, i) - 3)
     End If
    End If
   End If
7  Print #1, oname$(i)
   Print #1, outc$(griddata_static_condition(i), "#0")
   Select Case griddata_static_condition(i)
    Case 0:
    Case 1:
     Print #1, outc$(griddata_one(i), "##" & unitformat$(i))
    Case 2:
     For k = 1 To layernum
      printuse(k) = griddata_layer(static_lsdim(k, i) - 3)
     Next k
     Call printgrid(layernum, printuse(), "##" & unitformat$(i))
    Case 3:
     Print #1, outc$(griddata_dzmult, "##0.00")
    Case 4:
     If i = 5 Then Print #1, outc$(griddata_kxmult(1), "##0.000")
     If i = 6 Then Print #1, outc$(griddata_kxmult(2), "##0.000")
     If i = 12 Then Print #1, outc$(griddata_kxmult(3), "##0.000")
     If i = 13 Then Print #1, outc$(griddata_kxmult(4), "##0.000")
    Case 5:
     If i = 1 Then
      Print #1, outc$(static_5_condition(1), "#0")
      For j = 1 To griddynum
       For k = 1 To griddxnum
        printuse(k) = griddata_static(k, j, 1)
       Next k
       Call printgrid(griddxnum, printuse(), "##" & unitformat$(1))
      Next j
     Else
      For l = 1 To layernum
       Print #1, outc$(static_5_condition(static_lsdim(l, i) - 3), "#0")
       Select Case static_5_condition(static_lsdim(l, i) - 3)
        Case 0:
        Case 1:
         Print #1, outc$(griddata_static(1, 1, static_lsdim(l, i) - 3), "##" & unitformat$(i))
        Case 2, 3:
         For j = 1 To griddynum
          For k = 1 To griddxnum
           printuse(k) = griddata_static(k, j, static_lsdim(l, i) - 3)
          Next k
          Call printgrid(griddxnum, printuse(), "##" & unitformat$(i))
         Next j
       End Select
      Next l
     End If
   End Select
  Next i
  
  If FRAC_mod = -1 Then
   prt_num = 10
   Print #1, "TX、TY、TZ、TXF、TYF、TZF、TXMAEX、TYMAEX、TZMAEX、TCMAEX修正值"
  Else
   prt_num = 3
   Print #1, "TX、TY、TZ修正值"
  End If
  For i = 1 To prt_num
   Print #1, t_modifynum(i)
   If t_modifynum(i) <> 0 Then
    For j = 1 To t_modifynum(i)
     For k = 1 To 7
      Print #1, outc$(t_xyz(i, j, k), "###0");
     Next k
     Print #1, outc$(t_value(i, j), "###0.000")
    Next j
   End If
  Next i
  
  Call savefile_sta_fq(1, oilregion())  '油类型分区数据
  Call savefile_sta_fq(2, rockregion())  '岩石类型分区数据
  Call savefile_sta_fq(3, lsjsregion())  '离散计算分区数据
  Call savefile_sta_fq(4, printregion())  '打印摘要分区数据
  
  Close #1
    
  '------------------------------------------------------
  'save surf files
  bbb = 0
  'bbb = -1
  If bbb = 0 Then Exit Sub
  For kkk = 1 To 2
   pathsurf$ = "d:\hj\纯梁\surf\"
   Open pathsurf$ + "staK" + Trim$(Str$(kkk)) + ".txt" For Output As #1
   Print #1, "X坐标,Y坐标,HTOP";
   For j = 2 To static_num - 1
    For k = 1 To layernum
     Print #1, ","; oname_pr$(j) + Trim$(Str$(k));
    Next k
   Next j
   Print #1, ",DZsum,DZNETsum,井号"
   For i = 1 To static_lsnum
    'X坐标,Y坐标,HTOP
    Call wellpoint(static_lsdata(i, 2), static_lsdata(i, 3), xp, yp)
    If lsjsregion(xp, yp, 1) = kkk Then   'equal lsjsregion number.
     Print #1, Trim$(Str$(static_lsdata(i, 2))); ",";
     yval = gridy - static_lsdata(i, 3)
     Print #1, Trim$(Str$(yval)); ",";
     If Abs(static_lsdata(i, 4) + 99) > 0.0001 Then
      Print #1, Trim$(Str$(static_lsdata(i, 4))); ",";
     Else
      Print #1, " ,";
     End If
     'DZ1,…
     For j = 2 To static_num - 2
      xshu_val = 1
      If j = 4 Then xshu_val = 1000
      For k = 1 To layernum
       If Abs(static_lsdata(i, static_lsdim(k, j)) + 99) > 0.0001 Then
        Print #1, Trim$(Str$(static_lsdata(i, static_lsdim(k, j)) * xshu_val)); ",";
       Else
        Print #1, " ,";
       End If
      Next k
     Next j
     For k = 1 To layernum
      if1 = Abs(static_lsdata(i, static_lsdim(k, static_num - 1)) + 99) > 0.0001
      if2 = Abs(static_lsdata(i, static_lsdim(k, static_num)) + 99) > 0.0001
      If if1 And if2 Then
       sop = 1 - static_lsdata(i, static_lsdim(k, static_num - 1)) - static_lsdata(i, static_lsdim(k, static_num))
       Print #1, Trim$(Str$(sop)); ",";
      Else
       Print #1, " ,";
      End If
     Next k
     For j = 2 To 3
      prbz = -1
      sumdz = 0#
      For k = 1 To layernum
       If Abs(static_lsdata(i, static_lsdim(k, j)) + 99) <= 0.0001 Then prbz = 0
       sumdz = sumdz + static_lsdata(i, static_lsdim(k, j))
      Next k
      If prbz = -1 Then
       Print #1, Trim$(Str$(sumdz)); ",";
      Else
       Print #1, " ,";
      End If
     Next j
     Print #1, Trim$(Str$(static_lsdata(i, 1)))
    End If
   Next i

⌨️ 快捷键说明

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