How to perform a Substitution Simulation
Posted: Tue Aug 19, 2014 4:28 pm
To know more about the substitution model used to simulate facies, see Ch. Lantuéjoul Book "Geostatistical Simulations - Models and Algorithms" (Springer)
In the following examples, 4 facies with same probabilities are generated.
The time computing can be very long as the target grid is quite large. This even increases when going from the simple case to the heterogeneous realizations. But this choice is meant to provide esthetic and convincing simulation outcomes.
Definition of the environment, i.e.the grid (gridtest), the color scale (pal4f) and the transition probabilities (TP):
Isotropic simulation:
Oriented simulation:
Tests on possible parameter variations. The variabilities can concern either the desorientation factor
or the desorientation direction along X or in 2D.
Variations:
In the following examples, 4 facies with same probabilities are generated.
The time computing can be very long as the target grid is quite large. This even increases when going from the simple case to the heterogeneous realizations. But this choice is meant to provide esthetic and convincing simulation outcomes.
Definition of the environment, i.e.the grid (gridtest), the color scale (pal4f) and the transition probabilities (TP):
- Code: Select all
gridtest=db.create(dx=c(1,1),nx=c(600,300))
pal4f=c("blue","green","orange","red")
TP=matrix(c(.7,.1,.1,.1,.1,.7,.1,.1,.1,.1,.7,.1,.1,.1,.1,.7),nrow=4,ncol=4,byrow=T)
x11(width=5.5,height=4)
Isotropic simulation:
- Code: Select all
a=simsub(gridtest,nfacies=4,seed=76543,intensity=0.8,trans=TP,flag.orient=F)
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Isotrope")
Oriented simulation:
- Code: Select all
a=simsub(gridtest,nfacies=4,seed=12345,intensity=0.8,trans=TP,flag.orient=T,vector=c(0,1),factor=.8)
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Anisotrope")
Tests on possible parameter variations. The variabilities can concern either the desorientation factor
or the desorientation direction along X or in 2D.
Variations:
- Code: Select all
gridtest=db.add(gridtest,factlin=x1*.3/600)
a=simsub(gridtest,nfacies=4,seed=12345,intensity=0.8,trans=TP,flag.orient=T,vector=c(0,1),colfac="factlin")
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Heterogeneous_1")
gridtest=db.add(gridtest,diry=1)
gridtest=db.add(gridtest,aux=(x1-150)/450)
gridtest=db.add(gridtest,dirx1=-1+8*(aux*aux-aux^4))
a=simsub(gridtest,nfacies=4,seed=12345,intensity=0.8,trans=TP,flag.orient=T,colax="dirx1",colay="diry",factor=.8)
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Heterogeneous_2")
gridtest=db.add(gridtest,dirx2=-1+8*((x2/300)*aux*aux-aux^4))
a=simsub(gridtest,nfacies=4,seed=12345,intensity=0.8,trans=TP,flag.orient=T,colax="dirx2",colay="diry",factor=.8)
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Heterogeneous_3")
gridtest=db.add(gridtest,fact2D=(.2+ifelse(x1>250,.4*(x1-250)/250,0)+ifelse(x2>80,.4*(x2-80)/80,0))/2)
a=simsub(gridtest,nfacies=4,seed=12345,intensity=0.8,trans=TP,flag.orient=T,vector=c(0,1),colfac="fact2D")
plot(a,facies=4,col=pal4f,asp=1,title="Substitution Heterogeneous_4")