From cf34d4c85f752c1ad5411ca3da067cf5d61058ce Mon Sep 17 00:00:00 2001 From: yohanesnuwara <51282928+yohanesnuwara@users.noreply.github.com> Date: Sat, 7 Mar 2020 01:58:33 +0700 Subject: [PATCH] Delete fd1d_linearflow.ipynb --- .../fd1d_linearflow.ipynb | 2106 ----------------- 1 file changed, 2106 deletions(-) delete mode 100644 Reservoir Simulation Ertekin/Unit 5 Finite-Difference Approximation to Linear-Flow Equations/fd1d_linearflow.ipynb diff --git a/Reservoir Simulation Ertekin/Unit 5 Finite-Difference Approximation to Linear-Flow Equations/fd1d_linearflow.ipynb b/Reservoir Simulation Ertekin/Unit 5 Finite-Difference Approximation to Linear-Flow Equations/fd1d_linearflow.ipynb deleted file mode 100644 index f5a436a..0000000 --- a/Reservoir Simulation Ertekin/Unit 5 Finite-Difference Approximation to Linear-Flow Equations/fd1d_linearflow.ipynb +++ /dev/null @@ -1,2106 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "fd1d_linearflow.ipynb", - "provenance": [], - "collapsed_sections": [], - "authorship_tag": "ABX9TyNUmFxUCzL0OLIBh4nKhco1", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "eOe4EUXrFd9G", - "colab_type": "text" - }, - "source": [ - "# **Unit 5 Finite-Difference Approximations to Linear-Flow Problems**\n", - "\n", - "## Explicit Formulation\n", - "\n", - "$$p_{i}^{n+1} = p^i_n + (\\frac{\\alpha_c B_l \\Delta t}{V_b \\phi c_l})_i \\cdot q_{lsc_i} + (\\frac{\\alpha_c B_l \\Delta t}{V_b \\phi c_l})_i \\cdot [T_{lx_{i+1/2}}^{n} p_{i+1}^{n}-(T_{lx_{i+1/2}}^{n} + T_{lx_{i-1/2}}^{n})p_{i}^{n}+T_{lx_{i-1/2}}p_{i-1}^{n}]$$\n", - "\n", - "In the following codes, $(\\frac{\\alpha_c B_l \\Delta t}{V_b \\phi c_l})_i$ will be written as `factor`\n", - "\n", - "Transmissibility of coupling cells, $T_{lx_{i\\pm1/2}}^{n}$, written as `T_min_half` or `T_plus_half`" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "IJsmLh1xKz8S", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import pandas as pd" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "rJZBuBCVK6JV", - "colab_type": "code", - "outputId": "cea8c663-f8ea-4301-d439-58974cb7de79", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "!git clone https://github.com/yohanesnuwara/reservoir-engineering" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "text": [ - "fatal: destination path 'reservoir-engineering' already exists and is not an empty directory.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "N-NT2lf1GKb3", - "colab_type": "text" - }, - "source": [ - "## Example 5.8 Five reservoir gridblocks with no flow at both boundaries\n", - "\n", - "![Example 5 8](https://user-images.githubusercontent.com/51282928/75949840-09e36380-5eda-11ea-824c-dd5c9ac6f6d5.PNG)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fA3oDZbz9BR8", - "colab_type": "text" - }, - "source": [ - "### For timestep 10 days" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "dLVKK7xd7fGK", - "colab_type": "code", - "outputId": "01ed0d0d-7da3-4659-f752-5ed7c565bb15", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "\"Task. determine pressure distribution during first year of production with timestep 10 days\"\n", - "\n", - "# known\n", - "p_initial = 6000 # initial pressure, in psia\n", - "delta_x = 1000 # ft\n", - "delta_y = 1000\n", - "delta_z = 75\n", - "ngrid = 5\n", - "grid_loc = 4 # grid location where production well is located\n", - "B = 1 # phase FVF, assumed constant over pressure, rb/stb\n", - "c = 3.5E-06 # phase compressibility, psi^-1\n", - "k_x = 15 # perm in x direction, md\n", - "poro = 0.18\n", - "mu = 10 # phase viscosity, cp\n", - "\n", - "delta_t = 10 # days\n", - "qsc = -150 # minus means production, stb/d\n", - "\n", - "# conversion\n", - "k_x = 15 * 1E-03 # darcy to mD\n", - "\n", - "# calculate factor\n", - "Vb = delta_x * delta_y * delta_z\n", - "alpha = 5.615 # volume conversion factor, is a constant\n", - "factor = (alpha * B * delta_t) / (Vb * poro * c)\n", - "factor" - ], - "execution_count": 56, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "1.1883597883597885" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 56 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Qc6m3sTBQK1T", - "colab_type": "text" - }, - "source": [ - "Because of uniform gridblocks, the equation for `tr_plus_coupling` and `tr_min_coupling` become:\n", - "\n", - "$$T_{lx_{i+1/2}}^{n} = T_{lx_{i-1/2}}^{n} = (\\beta_c \\frac{A_x k_x}{\\mu_l B_l \\Delta x})_{i+1/2}^{n} = (\\beta_c \\frac{A_x k_x}{\\mu_l B_l \\Delta x})_{i-1/2}^{n}$$" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lvE1tGprRDlN", - "colab_type": "code", - "outputId": "d0ebd671-2065-4a9d-8b67-67d89594c1cb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "# calculate transmissibility of coupling cells\n", - "beta = 1.127 # transmissibility conversion factor, is a constant\n", - "Ax = delta_y * delta_z\n", - "T_plus_half = beta * ((Ax * k_x) / (mu * B * delta_x))\n", - "T_min_half = T_plus_half\n", - "T_min_half, T_plus_half" - ], - "execution_count": 57, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(0.1267875, 0.1267875)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 57 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "A0dUkd4SUYP_", - "colab_type": "text" - }, - "source": [ - "There are 5 grids (`grid_1`, `grid_2`, `grid_3`, `grid_4`, `grid_5`), so the transmissibility coefficients will be: $$T_{lx_{i+1/2}}^{n}=(T_{lx_{1+1/2}}^{n}, T_{lx_{2+1/2}}^{n}, T_{lx_{3+1/2}}^{n}, T_{lx_{4+1/2}}^{n}, T_{lx_{5+1/2}}^{n})$$\n", - "\n", - "and\n", - "\n", - "$$T_{lx_{i-1/2}}^{n}=(T_{lx_{1/2}}^{n}, T_{lx_{1+1/2}}^{n}, T_{lx_{2+1/2}}^{n}, T_{lx_{3+1/2}}^{n}, T_{lx_{4+1/2}}^{n})$$\n", - "\n", - "The values of $T_{lx_{5+1/2}}^{n}=0$ and $T_{lx_{1/2}}^{n}=0$ (the edge of gridblocks), so the values of each are:\n", - "\n", - "$$T_{lx_{i+1/2}}^{n}=(0.127, 0.127, 0.127, 0.127, 0)$$\n", - "\n", - "and\n", - "\n", - "$$T_{lx_{i-1/2}}^{n}=(0, 0.127, 0.127, 0.127, 0.127)$$\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "DSCdjpuNTDlY", - "colab_type": "code", - "outputId": "d10b6257-1570-4ff6-a313-f3c871d9c161", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 101 - } - }, - "source": [ - "q = np.full(ngrid-1, T_min_half)\n", - "Ti_plus_halves = np.append(q, [0])\n", - "print(Ti_plus_halves)\n", - "p = np.full(ngrid-1, T_plus_half)\n", - "Ti_min_halves = np.append([0], p)\n", - "print(Ti_min_halves)\n", - "print(\"At grid 1, the coupling transmissibility coeffs are:\", Ti_min_halves[0], \"for T_min_half and:\", Ti_plus_halves[0], \"for T_plus_half.\")\n", - "print(\"At grid 3, the coupling transmissibility coeffs are:\", Ti_min_halves[2], \"for T_min_half and:\", Ti_plus_halves[2], \"for T_plus_half.\")\n", - "print(\"At grid 5, the coupling transmissibility coeffs are:\", Ti_min_halves[4], \"for T_min_half and:\", Ti_plus_halves[4], \"for T_plus_half.\")" - ], - "execution_count": 58, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[0.1267875 0.1267875 0.1267875 0.1267875 0. ]\n", - "[0. 0.1267875 0.1267875 0.1267875 0.1267875]\n", - "At grid 1, the coupling transmissibility coeffs are: 0.0 for T_min_half and: 0.1267875 for T_plus_half.\n", - "At grid 3, the coupling transmissibility coeffs are: 0.1267875 for T_min_half and: 0.1267875 for T_plus_half.\n", - "At grid 5, the coupling transmissibility coeffs are: 0.1267875 for T_min_half and: 0.0 for T_plus_half.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Ektv_akOYbZO", - "colab_type": "text" - }, - "source": [ - "Requires array for $q_{sc}$" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Jh-Uh_VDYe86", - "colab_type": "code", - "colab": {} - }, - "source": [ - "qsc = [0, 0, 0, -150, 0] # production well in grid 4" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cwMJGOEQX3SG", - "colab_type": "text" - }, - "source": [ - "Calculate $p_{i}^{n+1}$ for each grid in each time" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "it86V05To2MJ", - "colab_type": "code", - "outputId": "aac19670-cc2d-4c20-b08c-4a1c89bca381", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - } - }, - "source": [ - "pi = np.full(ngrid, p_initial) # array of pressure in each grid [6000, 6000, 6000, 6000, 6000]\n", - "time = np.arange(15, 370, delta_t)\n", - "\n", - "pi_arr = []\n", - "min_arr = []\n", - "plus_arr = []\n", - "\n", - "for j in range(len(time)):\n", - " pnew_arr = []\n", - "\n", - " minus = pi[0]\n", - " plus = pi[-1]\n", - " minus_arr = []\n", - " plusus_arr = []\n", - " for i, obj in enumerate(pi):\n", - " if i > 0:\n", - " minus = pi[i-1]\n", - " if i < (len(pi) - 1):\n", - " plus = pi[i+1]\n", - "\n", - " pnew = pi[i] + (factor * ((Ti_plus_halves[i] * plus) - ((Ti_plus_halves[i] + Ti_min_halves[i]) * pi[i]) + (Ti_min_halves[i] * minus))) + (factor * qsc[i])\n", - " pnew_arr.append(float(pnew))\n", - "\n", - " minus_arr.append(float(minus))\n", - " plusus_arr.append(float(plus))\n", - "\n", - " pi = pnew_arr\n", - "\n", - " min_arr.append(minus_arr)\n", - " plus_arr.append(plusus_arr)\n", - " pi_arr.append(pi)\n", - "\n", - "df = pd.DataFrame.from_records(pi_arr)\n", - "df = pd.DataFrame(pd.np.column_stack([time, df]), columns=['time', 'grid 1', 'grid 2', 'grid 3', 'grid 4', 'grid 5'])\n", - "df" - ], - "execution_count": 60, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timegrid 1grid 2grid 3grid 4grid 5
015.06000.0000006000.0000006000.0000005821.7460326000.000000
125.06000.0000006000.0000005973.1426235697.2068175973.142623
235.06000.0000005995.9534215935.6141845602.1028855931.567605
345.05999.3903055987.4718535894.4555775523.7389615881.927430
455.05997.5945625975.2529125852.6146985455.3085145827.959472
565.05994.2283645960.1413125811.2307045393.0633475771.812463
675.05989.0924975942.8409435770.6620145334.8801205714.746649
785.05982.1238135923.8675705730.9451755279.5192205657.512476
895.05973.3463945903.5775335691.9966595226.2331535600.560547
9105.05962.8343785882.2108355653.6991745174.5549805544.160950
10115.05950.6868965859.9286565615.9365795124.1814925488.472727
11125.05937.0124275836.8410415578.6063335074.9073105433.585270
12135.05921.9196885813.0257725541.6224295026.5869635379.543561
13145.05905.5127335788.5406125504.9145804979.1126365326.363884
14155.05887.8886415763.4310065468.4261374932.4008645274.043828
15165.05869.1367135737.7347965432.1117944886.3844385222.568767
16175.05849.3384955711.4850505395.9354714841.0073685171.916155
17185.05828.5682325684.7117225359.8685084796.2217065122.058404
18195.05806.8934915657.4426065323.8881714751.9854755072.964860
19205.05784.3758515629.7038785287.9764374708.2613065024.603163
20215.05761.0715545601.5203865252.1190304665.0154974976.940199
21225.05737.0321125572.9158165216.3046414622.2173644929.942765
22235.05712.3048475543.9127735180.5243154579.8387604883.578035
23245.05686.9333535514.5328305144.7709594537.8537274837.813892
24255.05660.9579105484.7965615109.0389594496.2382214792.619144
25265.05634.4158265454.7235605073.3238674454.9698964747.963677
26275.05607.3417425424.3324705037.6221634414.0279344703.818548
27285.05579.7678885393.6410055001.9310604373.3928994660.156038
28295.05551.7243055362.6659764966.2483504333.0466154616.949675
29305.05523.2390445331.4233244930.5722864292.9720624574.174237
30315.05494.3383305299.9281474894.9014834253.1532854531.805740
31325.05465.0467095268.1947374859.2348474213.5753164489.821407
32335.05435.3871875236.2366144823.5715094174.2241004448.199638
33345.05405.3813365204.0665574787.9107844135.0864314406.919972
34355.05375.0494065171.6966444752.2521264096.1498974365.963039
35365.05344.4104155139.1382794716.5951064057.4028264325.310518
\n", - "
" - ], - "text/plain": [ - " time grid 1 grid 2 grid 3 grid 4 grid 5\n", - "0 15.0 6000.000000 6000.000000 6000.000000 5821.746032 6000.000000\n", - "1 25.0 6000.000000 6000.000000 5973.142623 5697.206817 5973.142623\n", - "2 35.0 6000.000000 5995.953421 5935.614184 5602.102885 5931.567605\n", - "3 45.0 5999.390305 5987.471853 5894.455577 5523.738961 5881.927430\n", - "4 55.0 5997.594562 5975.252912 5852.614698 5455.308514 5827.959472\n", - "5 65.0 5994.228364 5960.141312 5811.230704 5393.063347 5771.812463\n", - "6 75.0 5989.092497 5942.840943 5770.662014 5334.880120 5714.746649\n", - "7 85.0 5982.123813 5923.867570 5730.945175 5279.519220 5657.512476\n", - "8 95.0 5973.346394 5903.577533 5691.996659 5226.233153 5600.560547\n", - "9 105.0 5962.834378 5882.210835 5653.699174 5174.554980 5544.160950\n", - "10 115.0 5950.686896 5859.928656 5615.936579 5124.181492 5488.472727\n", - "11 125.0 5937.012427 5836.841041 5578.606333 5074.907310 5433.585270\n", - "12 135.0 5921.919688 5813.025772 5541.622429 5026.586963 5379.543561\n", - "13 145.0 5905.512733 5788.540612 5504.914580 4979.112636 5326.363884\n", - "14 155.0 5887.888641 5763.431006 5468.426137 4932.400864 5274.043828\n", - "15 165.0 5869.136713 5737.734796 5432.111794 4886.384438 5222.568767\n", - "16 175.0 5849.338495 5711.485050 5395.935471 4841.007368 5171.916155\n", - "17 185.0 5828.568232 5684.711722 5359.868508 4796.221706 5122.058404\n", - "18 195.0 5806.893491 5657.442606 5323.888171 4751.985475 5072.964860\n", - "19 205.0 5784.375851 5629.703878 5287.976437 4708.261306 5024.603163\n", - "20 215.0 5761.071554 5601.520386 5252.119030 4665.015497 4976.940199\n", - "21 225.0 5737.032112 5572.915816 5216.304641 4622.217364 4929.942765\n", - "22 235.0 5712.304847 5543.912773 5180.524315 4579.838760 4883.578035\n", - "23 245.0 5686.933353 5514.532830 5144.770959 4537.853727 4837.813892\n", - "24 255.0 5660.957910 5484.796561 5109.038959 4496.238221 4792.619144\n", - "25 265.0 5634.415826 5454.723560 5073.323867 4454.969896 4747.963677\n", - "26 275.0 5607.341742 5424.332470 5037.622163 4414.027934 4703.818548\n", - "27 285.0 5579.767888 5393.641005 5001.931060 4373.392899 4660.156038\n", - "28 295.0 5551.724305 5362.665976 4966.248350 4333.046615 4616.949675\n", - "29 305.0 5523.239044 5331.423324 4930.572286 4292.972062 4574.174237\n", - "30 315.0 5494.338330 5299.928147 4894.901483 4253.153285 4531.805740\n", - "31 325.0 5465.046709 5268.194737 4859.234847 4213.575316 4489.821407\n", - "32 335.0 5435.387187 5236.236614 4823.571509 4174.224100 4448.199638\n", - "33 345.0 5405.381336 5204.066557 4787.910784 4135.086431 4406.919972\n", - "34 355.0 5375.049406 5171.696644 4752.252126 4096.149897 4365.963039\n", - "35 365.0 5344.410415 5139.138279 4716.595106 4057.402826 4325.310518" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 60 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VjCDpaDZ89Xy", - "colab_type": "text" - }, - "source": [ - "### For timestep 15 days" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "kdIIes569fCp", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 758 - }, - "outputId": "e2933632-ff92-44ab-f6a1-c53d7314052f" - }, - "source": [ - "delta_t = 15 # days\n", - "\n", - "# calculate factor\n", - "Vb = delta_x * delta_y * delta_z\n", - "alpha = 5.615 # volume conversion factor, is a constant\n", - "factor = (alpha * B * delta_t) / (Vb * poro * c)\n", - "\n", - "pi = np.full(ngrid, 6000) # array of pressure in each grid [6000, 6000, 6000, 6000, 6000]\n", - "time = np.arange(15, 370, delta_t)\n", - "\n", - "pi_arr = []\n", - "min_arr = []\n", - "plus_arr = []\n", - "\n", - "for j in range(len(time)):\n", - " pnew_arr = []\n", - "\n", - " minus = pi[0]\n", - " plus = pi[-1]\n", - " minus_arr = []\n", - " plusus_arr = []\n", - " for i, obj in enumerate(pi):\n", - " if i > 0:\n", - " minus = pi[i-1]\n", - " if i < (len(pi) - 1):\n", - " plus = pi[i+1]\n", - "\n", - " pnew = pi[i] + (factor * ((Ti_plus_halves[i] * plus) - ((Ti_plus_halves[i] + Ti_min_halves[i]) * pi[i]) + (Ti_min_halves[i] * minus))) + (factor * qsc[i])\n", - " pnew_arr.append(float(pnew))\n", - "\n", - " minus_arr.append(float(minus))\n", - " plusus_arr.append(float(plus))\n", - "\n", - " pi = pnew_arr\n", - "\n", - " min_arr.append(minus_arr)\n", - " plus_arr.append(plusus_arr)\n", - " pi_arr.append(pi)\n", - "\n", - "df = pd.DataFrame.from_records(pi_arr)\n", - "df = pd.DataFrame(pd.np.column_stack([time, df]), columns=['time', 'grid 1', 'grid 2', 'grid 3', 'grid 4', 'grid 5'])\n", - "df" - ], - "execution_count": 61, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timegrid 1grid 2grid 3grid 4grid 5
015.06000.0000006000.0000006000.0000005732.6190486000.000000
130.06000.0000006000.0000005939.5709025586.0962915939.570902
245.06000.0000005986.3427975873.3415175478.4885145859.684314
360.05996.9134215963.8906635809.6419715386.4975015773.532634
475.05989.4501545936.4931475748.8705175302.2201775686.061243
590.05977.4816725906.0582115690.3292835222.5333975599.311723
6105.05961.3397025873.4446355633.3612055146.0293835514.158408
7120.05941.4750875839.0494945577.4821415071.9857905430.959868
8135.05918.3265195803.0828605522.3532734999.9783975349.830380
9150.05892.2810205765.6824205467.7405314929.7239855270.762520
10165.05863.6692615726.9581945413.4827584861.0127785193.686532
11180.05832.7720475687.0087845359.4690954793.6776295118.501016
12195.05799.8290035645.9266305305.6233004727.5789735045.089713
13210.05765.0464905603.7993155251.8929434662.5968244973.331095
14225.05728.6040245560.7096215198.2419704598.6261154903.103984
15240.05690.6592595516.7353375144.6455874535.5737354834.290844
16255.05651.3518015471.9491175091.0867434473.3564924766.779657
17270.05610.8061215426.4184715037.5537154411.8996284700.464921
18285.05569.1338215380.2058784984.0384384351.1356844635.248083
19300.05526.4353985333.3689754930.5353694291.0035954571.037615
20315.05482.8016625285.9608054877.0406964231.4479614507.748877
21330.05438.3148905238.0300994823.5517954172.4184314445.303834
22345.05393.0497765189.6215624770.0668644113.8691854383.630709
23360.05347.0742375140.7761664716.5846634055.7584854322.663593
\n", - "
" - ], - "text/plain": [ - " time grid 1 grid 2 grid 3 grid 4 grid 5\n", - "0 15.0 6000.000000 6000.000000 6000.000000 5732.619048 6000.000000\n", - "1 30.0 6000.000000 6000.000000 5939.570902 5586.096291 5939.570902\n", - "2 45.0 6000.000000 5986.342797 5873.341517 5478.488514 5859.684314\n", - "3 60.0 5996.913421 5963.890663 5809.641971 5386.497501 5773.532634\n", - "4 75.0 5989.450154 5936.493147 5748.870517 5302.220177 5686.061243\n", - "5 90.0 5977.481672 5906.058211 5690.329283 5222.533397 5599.311723\n", - "6 105.0 5961.339702 5873.444635 5633.361205 5146.029383 5514.158408\n", - "7 120.0 5941.475087 5839.049494 5577.482141 5071.985790 5430.959868\n", - "8 135.0 5918.326519 5803.082860 5522.353273 4999.978397 5349.830380\n", - "9 150.0 5892.281020 5765.682420 5467.740531 4929.723985 5270.762520\n", - "10 165.0 5863.669261 5726.958194 5413.482758 4861.012778 5193.686532\n", - "11 180.0 5832.772047 5687.008784 5359.469095 4793.677629 5118.501016\n", - "12 195.0 5799.829003 5645.926630 5305.623300 4727.578973 5045.089713\n", - "13 210.0 5765.046490 5603.799315 5251.892943 4662.596824 4973.331095\n", - "14 225.0 5728.604024 5560.709621 5198.241970 4598.626115 4903.103984\n", - "15 240.0 5690.659259 5516.735337 5144.645587 4535.573735 4834.290844\n", - "16 255.0 5651.351801 5471.949117 5091.086743 4473.356492 4766.779657\n", - "17 270.0 5610.806121 5426.418471 5037.553715 4411.899628 4700.464921\n", - "18 285.0 5569.133821 5380.205878 4984.038438 4351.135684 4635.248083\n", - "19 300.0 5526.435398 5333.368975 4930.535369 4291.003595 4571.037615\n", - "20 315.0 5482.801662 5285.960805 4877.040696 4231.447961 4507.748877\n", - "21 330.0 5438.314890 5238.030099 4823.551795 4172.418431 4445.303834\n", - "22 345.0 5393.049776 5189.621562 4770.066864 4113.869185 4383.630709\n", - "23 360.0 5347.074237 5140.776166 4716.584663 4055.758485 4322.663593" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 61 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kcGqECLeyYqD", - "colab_type": "text" - }, - "source": [ - "## Example 5.9 Similar to Ex 5.8, but **constant pressure at left boundary of reservoir**\n", - "\n", - "![Example 5 9](https://user-images.githubusercontent.com/51282928/76109912-081bbc00-6010-11ea-9f00-023e9d954ac6.PNG)\n", - "\n", - "The only modification is in the line:\n", - "\n", - "```\n", - "pnew = pi[i] + (factor * ((Ti_plus_halves[i] * plus) - ((Ti_plus_halves[i] + Ti_min_halves[i]) * pi[i]) + (Ti_min_halves[i] * minus))) + (factor * qsc[i])\n", - "pnew_arr.append(float(pnew))\n", - "pnew_arr[0] = pi[0]\n", - "```\n", - "Where `pnew_arr[0] = pi[0]` means the pressure in the first gridblock is kept constant, equals to initial pressure `pi` 6000 psi.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "rY78Xd0qE6OO", - "colab_type": "text" - }, - "source": [ - "### For timestep 15 days" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "XFDFqbsCydQw", - "colab_type": "code", - "outputId": "108cdb9d-278b-47df-ea59-ad9c4f47b7f8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 758 - } - }, - "source": [ - "pi = np.full(ngrid, p_initial) # array of pressure in each grid [6000, 6000, 6000, 6000, 6000]\n", - "time = np.arange(15, 370, delta_t)\n", - "\n", - "pi_arr = []\n", - "min_arr = []\n", - "plus_arr = []\n", - "\n", - "for j in range(len(time)):\n", - " pnew_arr = []\n", - "\n", - " plus = pi[-1]\n", - " minus_arr = []\n", - " plusus_arr = []\n", - " for i, obj in enumerate(pi):\n", - " if i > 0:\n", - " minus = pi[i-1]\n", - " if i < (len(pi) - 1):\n", - " plus = pi[i+1]\n", - "\n", - " pnew = pi[i] + (factor * ((Ti_plus_halves[i] * plus) - ((Ti_plus_halves[i] + Ti_min_halves[i]) * pi[i]) + (Ti_min_halves[i] * minus))) + (factor * qsc[i])\n", - " pnew_arr.append(float(pnew))\n", - " pnew_arr[0] = pi[0]\n", - "\n", - " minus_arr.append(float(minus))\n", - " plusus_arr.append(float(plus))\n", - "\n", - " pi = pnew_arr\n", - "\n", - " min_arr.append(minus_arr)\n", - " plus_arr.append(plusus_arr)\n", - " pi_arr.append(pi)\n", - "\n", - "df = pd.DataFrame.from_records(pi_arr)\n", - "df = pd.DataFrame(pd.np.column_stack([time, df]), columns=['time', 'grid 1', 'grid 2', 'grid 3', 'grid 4', 'grid 5'])\n", - "df" - ], - "execution_count": 62, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timegrid 1grid 2grid 3grid 4grid 5
015.06000.06000.0000006000.0000005732.6190486000.000000
130.06000.06000.0000005939.5709025586.0962915939.570902
245.06000.05986.3427975873.3415175478.4885145859.684314
360.06000.05963.8906635809.6419715386.4975015773.532634
475.06000.05937.1907265748.8705175302.2201775686.061243
590.06000.05908.8247845690.4869395222.5333975599.311723
6105.06000.05880.0855535634.0728555146.0650145514.158408
7120.06000.05851.5868755579.3810455072.1661515430.967921
8135.06000.05823.6092605526.2681165000.5082125349.877375
9150.06000.05796.2740155474.6446194930.9097115270.918634
10165.06000.05769.6274025424.4479414863.2581785194.075343
11180.06000.05743.6806205375.6288034797.4741365119.309423
12195.06000.05718.4286705328.1447714733.4942885046.573441
13210.06000.05693.8592225281.9571574671.2636384975.816379
14225.06000.05669.9567745237.0295434610.7317724906.986317
15240.06000.05646.7046035193.3270764551.8511034840.031679
16255.06000.05624.0856665150.8161224494.5760174774.901788
17270.06000.05602.0830245109.4640894438.8624644711.547112
18285.06000.05580.6800265069.2393344384.6677474649.919359
19300.06000.05559.8603985030.1111024331.9503994589.971500
20315.06000.05539.6082714992.0494934280.6701204531.657764
21330.06000.05519.9081914955.0254244230.7877224474.933615
22345.06000.05500.7451174919.0106114182.2650944419.755728
23360.06000.05482.1044134883.9775414135.0651654366.081954
\n", - "
" - ], - "text/plain": [ - " time grid 1 grid 2 grid 3 grid 4 grid 5\n", - "0 15.0 6000.0 6000.000000 6000.000000 5732.619048 6000.000000\n", - "1 30.0 6000.0 6000.000000 5939.570902 5586.096291 5939.570902\n", - "2 45.0 6000.0 5986.342797 5873.341517 5478.488514 5859.684314\n", - "3 60.0 6000.0 5963.890663 5809.641971 5386.497501 5773.532634\n", - "4 75.0 6000.0 5937.190726 5748.870517 5302.220177 5686.061243\n", - "5 90.0 6000.0 5908.824784 5690.486939 5222.533397 5599.311723\n", - "6 105.0 6000.0 5880.085553 5634.072855 5146.065014 5514.158408\n", - "7 120.0 6000.0 5851.586875 5579.381045 5072.166151 5430.967921\n", - "8 135.0 6000.0 5823.609260 5526.268116 5000.508212 5349.877375\n", - "9 150.0 6000.0 5796.274015 5474.644619 4930.909711 5270.918634\n", - "10 165.0 6000.0 5769.627402 5424.447941 4863.258178 5194.075343\n", - "11 180.0 6000.0 5743.680620 5375.628803 4797.474136 5119.309423\n", - "12 195.0 6000.0 5718.428670 5328.144771 4733.494288 5046.573441\n", - "13 210.0 6000.0 5693.859222 5281.957157 4671.263638 4975.816379\n", - "14 225.0 6000.0 5669.956774 5237.029543 4610.731772 4906.986317\n", - "15 240.0 6000.0 5646.704603 5193.327076 4551.851103 4840.031679\n", - "16 255.0 6000.0 5624.085666 5150.816122 4494.576017 4774.901788\n", - "17 270.0 6000.0 5602.083024 5109.464089 4438.862464 4711.547112\n", - "18 285.0 6000.0 5580.680026 5069.239334 4384.667747 4649.919359\n", - "19 300.0 6000.0 5559.860398 5030.111102 4331.950399 4589.971500\n", - "20 315.0 6000.0 5539.608271 4992.049493 4280.670120 4531.657764\n", - "21 330.0 6000.0 5519.908191 4955.025424 4230.787722 4474.933615\n", - "22 345.0 6000.0 5500.745117 4919.010611 4182.265094 4419.755728\n", - "23 360.0 6000.0 5482.104413 4883.977541 4135.065165 4366.081954" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 62 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mxJcErGBBIXN", - "colab_type": "text" - }, - "source": [ - "## Example 5.10 Halving the grid spacing of Ex 5.9 (more refined grids)\n", - "\n", - "![Example 5 10](https://user-images.githubusercontent.com/51282928/76109917-0c47d980-6010-11ea-95bf-87492c658368.PNG)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fFYOE_lkFJjP", - "colab_type": "text" - }, - "source": [ - "### For timestep 15 days" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "bIP_0qlqCRIh", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "outputId": "91a6dc9f-0890-40e1-8f7f-663842ed3411" - }, - "source": [ - "# known\n", - "p_initial = 6000 # initial pressure, in psia\n", - "delta_x = 500 # ft, half the previous one\n", - "delta_y = 1000\n", - "delta_z = 75\n", - "ngrid = 10 # now twice the number of previous gridblocks\n", - "grid_loc = 4 # grid location where production well is located\n", - "B = 1 # phase FVF, assumed constant over pressure, rb/stb\n", - "c = 3.5E-06 # phase compressibility, psi^-1\n", - "k_x = 15 # perm in x direction, md\n", - "poro = 0.18\n", - "mu = 10 # phase viscosity, cp\n", - "\n", - "delta_t = 15 # days\n", - "qsc = -150 # minus means production, stb/d\n", - "\n", - "# conversion\n", - "k_x = 15 * 1E-03 # darcy to mD\n", - "\n", - "# calculate factor\n", - "Vb = delta_x * delta_y * delta_z\n", - "alpha = 5.615 # volume conversion factor, is a constant\n", - "factor = (alpha * B * delta_t) / (Vb * poro * c)\n", - "factor" - ], - "execution_count": 63, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "3.5650793650793653" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 63 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "RJD9YA0qFxrn", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "outputId": "aa251214-295f-4497-c435-8fdb0ff28895" - }, - "source": [ - "# calculate transmissibility of coupling cells\n", - "beta = 1.127 # transmissibility conversion factor, is a constant\n", - "Ax = delta_y * delta_z\n", - "T_plus_half = beta * ((Ax * k_x) / (mu * B * delta_x))\n", - "T_min_half = T_plus_half\n", - "T_min_half, T_plus_half" - ], - "execution_count": 64, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(0.253575, 0.253575)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 64 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-_5Ca64kIJez", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 134 - }, - "outputId": "f1c477af-90f4-4df7-9333-26cb431891f3" - }, - "source": [ - "q = np.full(ngrid-1, T_min_half)\n", - "Ti_plus_halves = np.append(q, [0])\n", - "print(Ti_plus_halves)\n", - "p = np.full(ngrid-1, T_plus_half)\n", - "Ti_min_halves = np.append([0], p)\n", - "print(Ti_min_halves)\n", - "print(\"At grid 1, the coupling transmissibility coeffs are:\", Ti_min_halves[0], \"for T_min_half and:\", Ti_plus_halves[0], \"for T_plus_half.\")\n", - "print(\"At grid 3, the coupling transmissibility coeffs are:\", Ti_min_halves[2], \"for T_min_half and:\", Ti_plus_halves[2], \"for T_plus_half.\")\n", - "print(\"At grid 5, the coupling transmissibility coeffs are:\", Ti_min_halves[4], \"for T_min_half and:\", Ti_plus_halves[4], \"for T_plus_half.\")" - ], - "execution_count": 67, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[0.253575 0.253575 0.253575 0.253575 0.253575 0.253575 0.253575 0.253575\n", - " 0.253575 0. ]\n", - "[0. 0.253575 0.253575 0.253575 0.253575 0.253575 0.253575 0.253575\n", - " 0.253575 0.253575]\n", - "At grid 1, the coupling transmissibility coeffs are: 0.0 for T_min_half and: 0.253575 for T_plus_half.\n", - "At grid 3, the coupling transmissibility coeffs are: 0.253575 for T_min_half and: 0.253575 for T_plus_half.\n", - "At grid 5, the coupling transmissibility coeffs are: 0.253575 for T_min_half and: 0.253575 for T_plus_half.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "07e8nvgVIQUG", - "colab_type": "code", - "colab": {} - }, - "source": [ - "qsc = [0, 0, 0, 0, 0, 0, -75, -75, 0, 0] # production well in grid 7 and 8" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "z9gSh_h_IrgW", - "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 758 - }, - "outputId": "cb9aa8ca-49cf-4794-a124-86658ea1053c" - }, - "source": [ - "pi = np.full(ngrid, p_initial) # array of pressure in each grid [6000, 6000, 6000, 6000, 6000]\n", - "time = np.arange(15, 370, delta_t)\n", - "\n", - "pi_arr = []\n", - "min_arr = []\n", - "plus_arr = []\n", - "\n", - "for j in range(len(time)):\n", - " pnew_arr = []\n", - "\n", - " plus = pi[-1]\n", - " minus_arr = []\n", - " plusus_arr = []\n", - " for i, obj in enumerate(pi):\n", - " if i > 0:\n", - " minus = pi[i-1]\n", - " if i < (len(pi) - 1):\n", - " plus = pi[i+1]\n", - "\n", - " pnew = pi[i] + (factor * ((Ti_plus_halves[i] * plus) - ((Ti_plus_halves[i] + Ti_min_halves[i]) * pi[i]) + (Ti_min_halves[i] * minus))) + (factor * qsc[i])\n", - " pnew_arr.append(float(pnew))\n", - " pnew_arr[0] = pi[0]\n", - "\n", - " minus_arr.append(float(minus))\n", - " plusus_arr.append(float(plus))\n", - "\n", - " pi = pnew_arr\n", - "\n", - " min_arr.append(minus_arr)\n", - " plus_arr.append(plusus_arr)\n", - " pi_arr.append(pi)\n", - "\n", - "df = pd.DataFrame.from_records(pi_arr)\n", - "df = pd.DataFrame(pd.np.column_stack([time, df]), columns=['time', 'grid 1', 'grid 2', 'grid 3', 'grid 4', 'grid 5', 'grid 6', 'grid 7', 'grid 8', 'grid 9', 'grid 10'])\n", - "df" - ], - "execution_count": 74, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timegrid 1grid 2grid 3grid 4grid 5grid 6grid 7grid 8grid 9grid 10
015.06000.06.000000e+036.000000e+036.000000e+036.000000e+036.000000e+035.732619e+035.732619e+036.000000e+036.000000e+03
130.06000.06.000000e+036.000000e+036.000000e+036.000000e+035.758284e+035.706954e+035.706954e+035.758284e+036.000000e+03
245.06000.06.000000e+036.000000e+036.000000e+035.781485e+035.930397e+035.485976e+035.485976e+035.930397e+035.781485e+03
360.06000.06.000000e+036.000000e+035.802459e+036.113644e+035.394015e+035.620358e+035.620358e+035.394015e+035.916103e+03
475.06000.06.000000e+035.821420e+036.262355e+035.181772e+036.249188e+035.148360e+035.148360e+036.070608e+035.444128e+03
590.06000.05.838561e+036.381471e+034.886880e+037.123595e+034.289063e+035.876144e+035.714705e+034.670534e+036.010475e+03
6105.06000.06.475303e+034.539539e+038.260037e+032.539111e+038.286268e+034.028075e+034.649321e+036.825807e+034.799148e+03
7120.06000.04.295662e+039.652885e+03-2.751512e+021.290643e+04-7.587183e+028.171780e+035.787900e+033.026101e+036.631278e+03
8135.06000.01.067942e+04-4.165218e+032.061629e+04-1.136342e+041.966809e+04-2.323969e+035.178875e+038.781943e+033.372144e+03
9150.06000.0-6.970620e+033.165741e+04-3.069670e+044.559966e+04-2.826600e+042.407248e+041.386038e+036.341766e+028.262683e+03
10165.06000.03.967533e+04-5.963196e+049.464540e+04-9.014906e+048.582444e+04-4.401856e+042.094785e+048.210155e+031.366399e+03
11180.06000.0-8.054295e+041.696124e+05-2.118806e+052.359906e+05-1.906383e+051.318247e+05-4.956521e+041.353836e+047.553257e+03
12195.06000.02.238373e+05-4.014072e+055.378770e+05-5.545706e+054.865520e+05-3.239332e+051.711932e+05-4.891884e+041.296388e+04
13210.06000.0-5.383213e+051.012950e+06-1.298839e+061.374209e+06-1.187329e+068.560918e+05-4.756604e+052.060086e+05-4.297902e+04
14225.06000.01.356126e+06-2.479315e+063.207529e+06-3.357935e+062.975623e+06-2.195383e+061.344235e+06-6.353190e+051.821095e+05
15240.06000.0-3.331704e+066.128973e+06-7.868741e+068.302974e+06-7.424675e+065.678884e+06-3.645447e+061.893195e+06-5.568581e+05
16255.06000.08.238224e+06-1.507776e+071.940488e+07-2.053453e+071.863917e+07-1.459653e+079.790637e+06-5.328705e+061.658027e+06
17270.06000.0-2.028183e+073.717306e+07-4.787377e+075.098490e+07-4.682002e+073.749514e+07-2.592411e+071.465552e+07-4.658084e+06
18285.06000.04.999876e+07-9.165064e+071.183796e+08-1.268019e+081.178193e+08-9.605925e+076.809217e+07-3.948886e+071.280170e+07
19300.06000.0-1.232486e+082.262730e+08-2.931386e+083.159871e+08-2.966714e+082.456852e+08-1.775583e+081.050375e+08-3.446975e+07
20315.06000.03.041482e+08-5.592557e+087.270760e+08-7.885241e+087.474795e+08-6.272320e+084.605307e+08-2.765500e+089.164686e+07
21330.06000.0-7.513310e+081.384138e+09-1.805912e+091.970171e+09-1.883851e+091.598881e+09-1.189155e+097.226375e+08-2.412086e+08
22345.06000.01.858385e+09-3.430211e+094.491577e+09-4.927559e+094.748685e+09-4.069988e+093.059561e+09-1.876983e+096.301227e+08
23360.06000.0-4.602587e+098.512174e+09-1.118488e+101.233495e+10-1.197100e+101.034744e+10-7.848368e+094.852188e+09-1.636339e+09
\n", - "
" - ], - "text/plain": [ - " time grid 1 grid 2 ... grid 8 grid 9 grid 10\n", - "0 15.0 6000.0 6.000000e+03 ... 5.732619e+03 6.000000e+03 6.000000e+03\n", - "1 30.0 6000.0 6.000000e+03 ... 5.706954e+03 5.758284e+03 6.000000e+03\n", - "2 45.0 6000.0 6.000000e+03 ... 5.485976e+03 5.930397e+03 5.781485e+03\n", - "3 60.0 6000.0 6.000000e+03 ... 5.620358e+03 5.394015e+03 5.916103e+03\n", - "4 75.0 6000.0 6.000000e+03 ... 5.148360e+03 6.070608e+03 5.444128e+03\n", - "5 90.0 6000.0 5.838561e+03 ... 5.714705e+03 4.670534e+03 6.010475e+03\n", - "6 105.0 6000.0 6.475303e+03 ... 4.649321e+03 6.825807e+03 4.799148e+03\n", - "7 120.0 6000.0 4.295662e+03 ... 5.787900e+03 3.026101e+03 6.631278e+03\n", - "8 135.0 6000.0 1.067942e+04 ... 5.178875e+03 8.781943e+03 3.372144e+03\n", - "9 150.0 6000.0 -6.970620e+03 ... 1.386038e+03 6.341766e+02 8.262683e+03\n", - "10 165.0 6000.0 3.967533e+04 ... 2.094785e+04 8.210155e+03 1.366399e+03\n", - "11 180.0 6000.0 -8.054295e+04 ... -4.956521e+04 1.353836e+04 7.553257e+03\n", - "12 195.0 6000.0 2.238373e+05 ... 1.711932e+05 -4.891884e+04 1.296388e+04\n", - "13 210.0 6000.0 -5.383213e+05 ... -4.756604e+05 2.060086e+05 -4.297902e+04\n", - "14 225.0 6000.0 1.356126e+06 ... 1.344235e+06 -6.353190e+05 1.821095e+05\n", - "15 240.0 6000.0 -3.331704e+06 ... -3.645447e+06 1.893195e+06 -5.568581e+05\n", - "16 255.0 6000.0 8.238224e+06 ... 9.790637e+06 -5.328705e+06 1.658027e+06\n", - "17 270.0 6000.0 -2.028183e+07 ... -2.592411e+07 1.465552e+07 -4.658084e+06\n", - "18 285.0 6000.0 4.999876e+07 ... 6.809217e+07 -3.948886e+07 1.280170e+07\n", - "19 300.0 6000.0 -1.232486e+08 ... -1.775583e+08 1.050375e+08 -3.446975e+07\n", - "20 315.0 6000.0 3.041482e+08 ... 4.605307e+08 -2.765500e+08 9.164686e+07\n", - "21 330.0 6000.0 -7.513310e+08 ... -1.189155e+09 7.226375e+08 -2.412086e+08\n", - "22 345.0 6000.0 1.858385e+09 ... 3.059561e+09 -1.876983e+09 6.301227e+08\n", - "23 360.0 6000.0 -4.602587e+09 ... -7.848368e+09 4.852188e+09 -1.636339e+09\n", - "\n", - "[24 rows x 11 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 74 - } - ] - } - ] -} \ No newline at end of file