In [2]:
%%javascript
IPython.OutputArea.prototype._should_scroll = function(lines) {
return false;
}
In [3]:
# Import packages
from flumyx import *
# Just a function which displays the Flumy version currently loaded
def printVersion(simu):
old_tl = simu.getTracer().getTraceLevel()
simu.getTracer().setTraceLevel(TL_DEBUG)
simu.printVersion()
simu.getTracer().setTraceLevel(old_tl)
In [4]:
# Fluvial simulation parameters
trace_level = TL_WARNING # 0: None, 1: Fatal, 2: Error, 3: Warning, 4: Info, 5: Debug
# PARAMETER KEY VALUE
params = {KEY_CHNL_MAX_DEPTH: 3,
KEY_CHNL_WAVELENGTH: 400}
# Simulation root seed
seed = 665544
# Well files (adapt the path to the files if needed)
wells = {"well1": "../../data/fluvial/w_125_65.flw", # Well with UDF at the top and the bottom
"well2": "../../data/fluvial/w_180_125.flw"} # Well with a small UDF near the bottom
# Create simulator and show Flumy version
simu = iSimulator.createSimulator()
printVersion(simu)
# Fluvial simulation
simu.getParameters().setUsingFluvi()
# Verbose conditioning
#trace_level = TL_DEBUG
#simu.getTracer().setTraceCond(True)
Flumy (8.000) / 2025-02-04
In [5]:
# Reset the simulation (return at age 0)
simu.clear()
# Launch the simulation up to 9m thickness
print("Running simulation...")
runFlumy(simu, 0, seed, params, zul=9, trace_level=trace_level, wellFiles=wells)
print("Simulation finished!")
Running simulation... Simulation finished!
In [6]:
# Get the 3D regular block
fac,grain,age = simu.getBlock(0.1, zb=0, zt=6)
# Display Facies cross-flow section
showSection(fac = fac[50,:,:], size=8, legend=1)
# Display Grain Size along-flow section
showSection(grain = grain[:,20,:], size=8, legend=2)
# Display Age horizontal slice section
showSection(age = age[:,:,2], size=8, legend=1, title="Age horizontal slice #2")
In [7]:
# Display Vertical Proportion Curve of the simulation
showVPC(simu, 0.1, 0, 6) # VPC with level of 0.1m between 0m and 6m elevation
In [8]:
# Print conditioning statistics (for each well and globally)
dom = simu.getDomain()
stats = dom.getCondStats()
for s in stats:
print(s.summary())
well1 [1240 640] [125 65]
Data | Simu | Match
Bottom : 3.89 | -1.06 | 3.89
Top : 47.78 | 9.65 | 8.53
Length : 4.64 | 4.64 | 4.64
Sand : 0.71 | 0.71 | 0.68
Channel: 0.71 | 0.74 | 0.71
MP/HP : 0.00 | 0.03 | 0.00
LV : 0.03 | 0.06 | 0.00
OB : 0.26 | 0.20 | 0.20
WL/PL : 0.00 | 0.00 | 0.00
Total : 1.00 | 1.00 | 0.88
well2 [1790 1240] [180 125]
Data | Simu | Match
Bottom : 0.00 | -0.72 | 0.00
Top : 50.00 | 9.48 | 8.74
Length : 8.06 | 8.74 | 8.06
Sand : 0.90 | 0.41 | 0.39
Channel: 0.90 | 0.92 | 0.90
MP/HP : 0.00 | 0.52 | 0.00
LV : 0.02 | 0.05 | 0.00
OB : 0.08 | 0.03 | 0.00
WL/PL : 0.00 | 0.00 | 0.00
Total : 1.00 | 1.00 | 0.39
Total
Data | Simu | Match
Bottom : 0.00 | -1.06 | 0.00
Top : 50.00 | 9.65 | 8.74
Length : 50.00 | 10.71 | 8.74
Sand : 0.83 | 0.51 | 0.50
Channel: 0.83 | 0.86 | 0.83
MP/HP : 0.00 | 0.35 | 0.00
LV : 0.02 | 0.05 | 0.00
OB : 0.14 | 0.09 | 0.07
WL/PL : 0.00 | 0.00 | 0.00
Total : 1.00 | 1.00 | 0.57
In [9]:
# Print data information from a given input well (from top to bottom)
print(simu.getWellInfos(125,65))
Well well1 [1240 640] [125 65]:
Well bottom: 3.89
Well top: 47.78
Well wet: 0
Domain elevation: 9.65
Active level: 8.53
Active sample bottom: 8.53
Sample #1: CL (1) : [47.68 => 47.78] - th=0.1
Sample #2: PB (2) : [47.56 => 47.68] - th=0.12
Sample #3: CL (1) : [47.48 => 47.56] - th=0.08
Sample #4: PB (2) : [44.32 => 47.48] - th=3.16
Sample #5: SP (3) : [43.78 => 44.32] - th=0.54
Sample #6: PB (2) : [40.61 => 43.78] - th=3.17
Sample #7: CL (1) : [40.51 => 40.61] - th=0.1
Sample #8: PB (2) : [40.39 => 40.51] - th=0.12
Sample #9: CL (1) : [40.37 => 40.39] - th=0.02
Sample #10: PB (2) : [40.23 => 40.37] - th=0.14
Sample #11: LV (7) : [39.93 => 40.23] - th=0.3
Sample #12: OB (8) : [39.78 => 39.93] - th=0.15
Sample #13: WL (11) : [39.77 => 39.78] - th=0.01
Sample #14: OB (8) : [39.49 => 39.77] - th=0.28
Sample #15: WL (11) : [39.46 => 39.49] - th=0.03
Sample #16: OB (8) : [38.21 => 39.46] - th=1.25
Sample #17: LV (7) : [38.13 => 38.21] - th=0.08
Sample #18: OB (8) : [36.67 => 38.13] - th=1.46
Sample #19: WL (11) : [36.66 => 36.67] - th=0.01
Sample #20: OB (8) : [36.56 => 36.66] - th=0.1
Sample #21: WL (11) : [36.43 => 36.56] - th=0.13
Sample #22: OB (8) : [36.39 => 36.43] - th=0.04
Sample #23: WL (11) : [36.37 => 36.39] - th=0.02
Sample #24: OB (8) : [36.3 => 36.37] - th=0.07
Sample #25: WL (11) : [36.28 => 36.3] - th=0.02
Sample #26: OB (8) : [36.26 => 36.28] - th=0.02
Sample #27: WL (11) : [36.24 => 36.26] - th=0.02
Sample #28: OB (8) : [36.06 => 36.24] - th=0.18
Sample #29: WL (11) : [36.05 => 36.06] - th=0.01
Sample #30: OB (8) : [35.72 => 36.05] - th=0.33
Sample #31: LV (7) : [35.62 => 35.72] - th=0.1
Sample #32: OB (8) : [34.9 => 35.62] - th=0.72
Sample #33: LV (7) : [34.45 => 34.9] - th=0.45
Sample #34: OB (8) : [34.31 => 34.45] - th=0.14
Sample #35: LV (7) : [33.63 => 34.31] - th=0.68
Sample #36: PB (2) : [30.63 => 33.63] - th=3
Sample #37: MP (9) : [30.02 => 30.63] - th=0.61
Sample #38: SP (3) : [29.97 => 30.02] - th=0.05
Sample #39: PB (2) : [29.78 => 29.97] - th=0.19
Sample #40: CL (1) : [29.74 => 29.78] - th=0.04
Sample #41: PB (2) : [28.84 => 29.74] - th=0.9
Sample #42: CL (1) : [28.8 => 28.84] - th=0.04
Sample #43: PB (2) : [28.75 => 28.8] - th=0.05
Sample #44: MP (9) : [27.38 => 28.75] - th=1.37
Sample #45: SP (3) : [27.06 => 27.38] - th=0.32
Sample #46: PB (2) : [22.6 => 27.06] - th=4.46
Sample #47: LV (7) : [22.5 => 22.6] - th=0.1
Sample #48: PB (2) : [17.01 => 22.5] - th=5.49
Sample #49: OB (8) : [15.82 => 17.01] - th=1.19
Sample #50: LV (7) : [15.43 => 15.82] - th=0.39
Sample #51: OB (8) : [15.02 => 15.43] - th=0.41
Sample #52: LV (7) : [14.43 => 15.02] - th=0.59
Sample #53: OB (8) : [13.63 => 14.43] - th=0.8
Sample #54: LV (7) : [13.37 => 13.63] - th=0.26
Sample #55: OB (8) : [13.23 => 13.37] - th=0.14
Sample #56: MP (9) : [11.42 => 13.23] - th=1.81
Sample #57: SP (3) : [10.24 => 11.42] - th=1.18
Sample #58: MP (9) : [9.89 => 10.24] - th=0.35
<<<Sample #59: SP (3) : [8.53 => 9.89] - th=1.36
Sample #60: OB (8) : [7.31 => 8.53] - th=1.22
Sample #61: PB (2) : [4.31 => 7.31] - th=3
Sample #62: LV (7) : [4.19 => 4.31] - th=0.12
Sample #63: PB (2) : [3.96 => 4.19] - th=0.23
Sample #64: CL (1) : [3.89 => 3.96] - th=0.07
In [10]:
# Print the content of the corresponding simulation pillar (from top to bottom)
print(simu.extractWell(125, 65).debug_info())
Core at X,Y,Z = [1240,640,9.65] :
Sample #1: OB(8) : [8.77 => 9.65] - height = 0.88 - length = 0.88
Sample #2: LV(7) : [8.71 => 8.77] - height = 0.06 - length = 0.06
Sample #3: OB(8) : [7.61 => 8.71] - height = 1.1 - length = 1.1
Sample #4: LV(7) : [7.33 => 7.61] - height = 0.28 - length = 0.28
Sample #5: PB(2) : [4.13 => 7.33] - height = 3.2 - length = 3.2
Sample #6: CL(1) : [4.05 => 4.13] - height = 0.08 - length = 0.08
Sample #7: PB(2) : [4.04 => 4.05] - height = 0.01 - length = 0.01
Sample #8: MP(9) : [1.8 => 4.04] - height = 2.24 - length = 2.24
Sample #9: PB(2) : [-1.06 => 1.8] - height = 2.86 - length = 2.86
In [ ]: