README.md

Flumy R Package (flumy)

flumy is a R Package for Flumy kernel C++ library. More details for Flumy are available here: https://flumy.minesparis.psl.eu

This R Package can be used by anyone who wants to generate realistic non-conditional reservoir models for meandering channelized fluvial environement (Training images for MPS or training datasets for GANs).

How to cite

Please, use this to cite us in any publication or results for which Flumy has been used:

--------------------------------------------------
FLUMY™
Process-based channelized reservoir models
Copyright © MINES PARIS - PSL / ARMINES
Free download from https://flumy.minesparis.psl.eu
--------------------------------------------------

Installation

install.packages("flumy",repos="https://soft.mines-paristech.fr/cran")

Usage

# Import package
library(flumy)
library(ggplot2)

nx      = 250   # Number of grid nodes along Ox
ny      = 200   # Number of grid nodes along Oy
mesh    = 10    # Horizontal grid mesh size: 10m
hmax    = 3     # Maximum channel depth: 3m
ng      = 50    # Required Net-to-Gross: 50%
isbx    = 80    # Required sand bodies extension (medium extension = few meander cutoffs)
verbose = TRUE  # Verbose mode

res = 30              # Vertical resolution (increase 'res' to get higher resolution)
dz  = hmax / res      # Vertical discretization step (0.1m)
zul = 3 * hmax        # Fill a reservoir of 3 x hmax height (9m)
nz  = round(zul / dz) # Number of vertical nodes of the resulted block of sediments

# Launch the simulation
seed = 123456 # Simulation seed
# Create the simulator
flsim = Flumy(nx, ny, mesh, verbose)

# Launch up to zul
success = flsim$launch(seed, hmax, isbx, ng, zul)
if (! success)
  cat("Error while running Flumy\n")

# Display the age of the simulation, the mean topography reached and the total number of meander cutoffs
cat("Final age:",flsim$getAge(), "yr\n")
cat("Mean topography:",round(flsim$getDomain()$getMeanTopo(),2), "m\n")
cat("Number of cutoffs:",flsim$getNbCutoff(),"\n")

# Retrieve facies identifiers in a 3D regular grid
fac = flsim$getDomain()$getRegularFacies(dz,0,nz)
fac3 = array(fac,dim=c(nz,ny,nx))
table(fac3)

# Display the slice #2 (col.flumy and fac.flumy are defined in the package)
nslice = 2
df = expand.grid(x = 1:nx, y = 1:ny)
df$val = factor(as.vector(matrix(fac3[nslice,,], nx, ny, byrow=T)))
values = col.flumy[as.integer(levels(df$val))] # Discard colors for missing facies
labels = fac.flumy[as.integer(levels(df$val))] # Discard labels for missing facies
ggplot(df, aes(x, y, fill=val)) + geom_raster() + coord_fixed() + scale_fill_manual(values=values, labels=labels)