Page 1 of 1

How to perform a Substitution Simulation

PostPosted: Tue Aug 19, 2014 4:28 pm
by helene beucher
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):
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")

Image

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

Image
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")


ImageImage
ImageImage