-
Notifications
You must be signed in to change notification settings - Fork 31
LBPM Tutorial, Step 4. Permeability Measurement
JamesEMcClure edited this page May 10, 2019
·
5 revisions
It is straightforward to apply the MRT LBM to measure permeability from a digital rock image. As in the previous example, we populate the input file to provide the parameters needed by the MRT model
MRT {
tau = 1.0
F = 0.0, 0.0, 1.0e-5
timestepMax = 20000
tolerance = 0.01
}
Domain {
Filename = "mask_water_flooded_water_and_oil.raw"
ReadType = "16bit" // data type
N = 601, 594, 1311 // size of original image
nproc = 2, 2, 2 // process grid
n = 300, 297, 300 // sub-domain size
voxel_length = 7.0 // voxel length (in microns)
ReadValues = 0, 1, 2 // labels within the original image
WriteValues = 0, 2, 1 // associated labels to be used by LBPM
InletLayers = 0, 0, 10 // specify 10 layers along the z-inlet
checkerSize = 10 // size of the checker to use
BC = 0 // boundary condition type (0 for periodic)
}
here we have added tolerance
, which is simply a steady-state termination criterion. The absolute relative deviation in the total flow rate is computed at an interval of 1000
timesteps. If the deviation drops below tolerance
the simulation will exit.
To launch the permeability simulation with the desired number of MPI processes, we use lbpm_permeability_simulator
. Since we have defined the process grid based on nproc = 2, 2, 2
, we must use 8 MPI processes.
mpirun -np 8 lbpm_permeability_simulator input.db
Successful application should produce output similar to the following
********************************************************
Running Single Phase Permeability Calculation
********************************************************
MPI rank=0 will use GPU ID 0 / 4
MPI rank=2 will use GPU ID 2 / 4
MPI rank=1 will use GPU ID 1 / 4
MPI rank=3 will use GPU ID 3 / 4
voxel length = 7.000000 micron
voxel length = 7.000000 micron
Read input media...
Initialize from segmented data: solid=0, NWP=1, WP=2
Media porosity = 0.113193
Initialized solid phase -- Converting to Signed Distance function
Domain set.
Create ScaLBL_Communicator
Set up memory efficient layout
Allocating distributions
Setting up device map and neighbor list
Initializing distributions
Beginning AA timesteps...
********************************************************
1.772121
1.661506
1.617379
1.592925
1.577158
1.566075
1.557838
1.551474
1.546413
1.542296
1.538885
1.536013
1.533564
1.531450
1.529606
1.527983
1.526542
1.525253
1.524091
1.523038
-------------------------------------------------------------------
********************************************************
CPU time = 0.014239
Lattice update rate (per core)= 332.605597 MLUPS
Lattice update rate (total)= 2660.844780 MLUPS
********************************************************