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

📄 readdata.vb

📁 一个lbm的程序
💻 VB
字号:
Imports System
Public Class ReadData
    Public Shared Sub ReadFromFile(ByVal strFile As String)
        Dim i, j, k As Int32
        Dim str As String
        Dim mi As New IO.StreamReader(strFile)
        DataDescription = mi.ReadLine
        str = mi.ReadLine
        k = str.IndexOf(" ")
        m = CInt(str.Substring(0, k)) - 1
        n = CInt(str.Substring(k + 1, str.Length - k - 1)) - 1
        ReDim flag(m, n), mass(m, n), eps(m, n), rho(m, n), u(m, n), v(m, n)
        ReDim field(m, n)
        For i = 0 To m
            For j = 0 To n
                str = mi.ReadLine
                k = str.IndexOf(" ")
                If k < 0 Then
                    flag(i, j) = CByte(str)
                Else
                    flag(i, j) = CByte(str.Substring(0, k))
                End If
                Select Case flag(i, j)
                    Case CONST_EMPTY
                        dealEmpty(i, j)
                    Case CONST_WALL
                        dealWall(i, j, k, str)
                    Case CONST_NONE
                        dealNone()
                    Case CONST_IOLET
                        dealIOlet(i, j, k, str)
                    Case CONST_INTERFACE
                        itfArray.Add(New Int32() {i, j})
                        dealInterface(i, j, k, str)
                    Case CONST_FLUID
                        dealFluid(i, j, k, str)
                End Select
            Next
        Next
        mi.Close()
    End Sub

    Private Shared Sub dealEmpty(ByVal i As Int32, ByVal j As Int32)

    End Sub

    Private Shared Sub dealWall(ByVal i As Int32, ByVal j As Int32, ByRef k As Int32, ByRef str As String)
        Dim l As Int32
        Dim dd(1) As Double
        l = str.IndexOf(" ", k + 1)
        dd(0) = Val(str.Substring(k + 1, l - k - 1))
        dd(1) = Val(str.Substring(l + 1))
        field(i, j) = New WallCell(dd)
    End Sub

    Private Shared Sub dealNone()

    End Sub

    Private Shared Sub dealIOlet(ByVal i As Int32, ByVal j As Int32, ByRef k As Int32, ByRef str As String)

        Dim ii, l As Int32
        Dim dd(5) As Double
        l = str.IndexOf(" ", k + 1)
        dd(0) = Val(str.Substring(k + 1, l - k - 1))
        k = str.IndexOf(" ", l + 1)
        If k < 0 Then
            dd(1) = CByte(str.Substring(l + 1))
        Else
            dd(1) = CByte(str.Substring(l + 1, k - l - 1))
        End If
        field(i, j) = New IOletCell(dd(0), dd(1))
        Dim incell As IOletCell = field(i, j)
        If dd(1) = CONST_FLUID Then
            For ii = 2 To 4
                l = str.IndexOf(" ", k + 1)
                dd(ii) = Val(str.Substring(k + 1, l - k - 1))
                k = l
            Next
            u(i, j) = dd(2)
            v(i, j) = dd(3)
            rho(i, j) = dd(4)
            mass(i, j) = dd(4)
            eps(i, j) = 1
            field(i, j).f = Collide.getfe0(i, j)
        ElseIf dd(1) = CONST_EMPTY Then
            'nothing to do now
        ElseIf dd(1) = CONST_INTERFACE Then
            For ii = 2 To 5
                l = str.IndexOf(" ", k + 1)
                dd(ii) = Val(str.Substring(k + 1, l - k - 1))
                k = l
            Next
            u(i, j) = dd(2)
            v(i, j) = dd(3)
            rho(i, j) = dd(4)
            mass(i, j) = dd(5)
            eps(i, j) = dd(5) / dd(4)
            field(i, j).f = Collide.getfe0(i, j)
        End If

    End Sub

    Private Shared Sub dealInterface(ByVal i As Int32, ByVal j As Int32, ByRef k As Int32, ByRef str As String)
        field(i, j) = New InterfaceCell
        Dim ii, l As Int32
        Dim dd(3) As Double
        For ii = 0 To 2
            l = str.IndexOf(" ", k + 1)
            dd(ii) = Val(str.Substring(k + 1, l - k - 1))
            k = l
        Next
        dd(3) = Val(str.Substring(l + 1))
        u(i, j) = dd(0)
        v(i, j) = dd(1)
        rho(i, j) = dd(2)
        mass(i, j) = dd(3)
        eps(i, j) = mass(i, j) / rho(i, j)
        field(i, j).f = Collide.getfe0(i, j)
    End Sub

    Private Shared Sub dealFluid(ByVal i As Int32, ByVal j As Int32, ByRef k As Int32, ByRef str As String)
        field(i, j) = New FluidCell
        Dim ii, l As Int32
        Dim dd(2) As Double
        For ii = 0 To 1
            l = str.IndexOf(" ", k + 1)
            dd(ii) = Val(str.Substring(k + 1, l - k - 1))
            k = l
        Next
        dd(2) = Val(str.Substring(l + 1))
        u(i, j) = dd(0)
        v(i, j) = dd(1)
        rho(i, j) = dd(2)
        mass(i, j) = rho(i, j)
        eps(i, j) = 1
        field(i, j).f = Collide.getfe0(i, j)
    End Sub
End Class

⌨️ 快捷键说明

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