-
Notifications
You must be signed in to change notification settings - Fork 31
LBPM Tutorial, Step 5. Assessing Steady State Permeability
The previous section of the tutorial covered the approach to measure steady-state permeability. We now consider how to assess the simulation has achieved this objective. For example, suppose that we choose tolerance = 0.01
-- is this sufficient to produce a satisfactory measurement? To determine this, we must examine the time history for the simulation and understand how the simulation approaches a steady-state.
LBPM is equipped with fairly sophisticated capabilities for in situ analysis. This means that as a simulation is performed, LBPM continuously analyzes the simulation results to obtain averaged measures that capture how the flow evolves. For lbpm_permeability_simulator
the simulation is analyzed every 1000
timesteps, and the time history for averaged measures is logged to the spaced-delimited CSV file Permeability.csv
. Effectively all spreadsheet and plotting software packages can import CSV files so that results can be visualized using any tool that you prefer. In my case, I often prefer to use R. In this tutorial, we will use python.
We can plot how the time history
- import required modules
import pandas as pd
import numpy as np
from matplotlib import pyplot
- read the CSV data
D=pd.read_csv("Permeability.csv",sep=" ")
- Note that the original image includes the entire cylindrical core, meaning the the permeability will be under-estimated since the true porosity should only include the region inside the cylinder. Furthermore units reported by LBPM are in square microns. We can convert this to milliDarcy by rescaling:
CylinderRatio=0.7853982
UnitConversion=1013
K=D['k']*UnitConversion/CylinderRatio
- Then we plot and visualize the data
pyplot.figure()
pyplot.plot(D['time'],K)
pyplot.xlabel('time')
pyplot.ylabel('permeability (millidarcy))')
pyplot.show()
The resulting plot match what is shown below:
Based on this, we can see that the permeability is still drifting, and has not completely reached steady state. We might elect to re-run the simulation, specifying a larger number of maximum timesteps using timestepMax
and lower tolerance
.
Note: larger images will require larger numbers of timesteps to reach steady-state