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 environment (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

R


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

Usage

R


# 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)