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).
- Copyright: MINES PARIS - PSL University
- Research Lab: GEOSCIENCES (Fontainebleau, France)
- Authors: Flumy Team
- Contact: flumy@mines-paristech.fr
- License: https://flumy.minesparis.psl.eu/end-user-license-agreement
- Date: February 2025
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
--------------------------------------------------
install.packages("flumy",repos="https://soft.mines-paristech.fr/cran")
# 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)