Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

plotting units and cross_sections #17

Closed
Alfaruuki opened this issue Jan 7, 2024 · 3 comments
Closed

plotting units and cross_sections #17

Alfaruuki opened this issue Jan 7, 2024 · 3 comments

Comments

@Alfaruuki
Copy link

Alfaruuki commented Jan 7, 2024

Dear all,

I am tried to follow tutorial 2, luckily I was able follow all the steps however, I have an issue with my plots as the top unit is extremely exaggerated as in the pictures below. How can I correct this.

p = pv.Plotter(1)
v_ex=1
T1.plot_units(iu=0, plotter=p, slicex=(0.3), slicey=(0.3),v_ex=v_ex)
p.show()
image

p = pv.Plotter()
T1.plot_facies(plotter=p, slicex=(0.5), slicey=(0.5),v_ex=1)
T1.plot_bhs("facies", plotter=p, v_ex=1)
p.show()
image

#cross section
#first a list of points must be defined
p1 = [1,15]
p2 = [15,25]
p3 = [20,5]
T1.plot_cross_section([p1,p3],typ='facies',iu=0)
image

Going forward, I tried using my own dataset how ever my plots are not coming out fine as I expected, particularly my cross-section is just too simple. What can I do to reactify this issue? Thank you

image

image

@LudovicSchorpp
Copy link
Member

For the first problem, you have probably modified the spacing (or the number of cells) in the z direction (sz must be 0.5 and nz must be 50). Consequentely, the grid now is too big in this direction (its top is at 50 (or higher) instead of 25).

For the second problem, I'm not sure but probably the issue is the covariance models (variograms) used. These define the range of spatial correlation that the surface (and facies) can have. Here we nearly observed a straight line which indicates that no spatial correlation is considered. Probably because the extent of this correlation (the range) is too small.

In the example below (taken from notebook 2), it shows the different parameter defined for unit B. The surface covmodel is shown at the first line and is called by the gcm.CovModel2D function. See the geone documentation for more information. But what you will have to change is probably the list after the "r" which is [15, 5] here. These two numbers indicate the maximal distance of correlation in x direction and y, respectively. This means that two points that are spaced by a distance greater than these distances, there will be no correlation. Ensure to have a sufficient distance that is representative of your data (you can make experimental variogram for this, see the inference notebook but note that some widgets are not working...) or you can adjust manually the value until you find something that looks good for you.

## B
#surface B
covmodel_b = gcm.CovModel2D(elem = [("cubic", {"w":2, "r" : [15,5]})])  # Surface covariance model
dic_surf_b = {"covmodel" : covmodel_b, "int_method" : "grf_ineq"}
Sb = ArchPy.base.Surface(name = "Sb", dic_surf=dic_surf_b)

#dic facies b 
dic_facies_b = {"f_method" : "SIS", "f_covmodel" : covmodel_SIS, "probability" : [0.7, 0.3]} 

B = ArchPy.base.Unit(name = "B",
                      order = 2,   #order in pile
                      color = "greenyellow", #color
                      surface=Sb, # top surface
                      ID = 2,     #ID
                      dic_facies=dic_facies_b #facies dictionnary
                     )

Also make sure that the top of your model does not exceed the top of your boreholes. Here it seems that it is the case. Adjust the grid of your model accordingly. (oz + nz*sz = top elevation, or you can directly set the top elevation by specfifying it, e.g.

T1.agg_grid(dimensions, spacing, origin, top=top_elevation)

@Alfaruuki
Copy link
Author

Alfaruuki commented Jan 8, 2024

Dear Ludovic,

Thank you for your response. My first issue is solved. However, the second issue not solved yet. I have been trying different values for the COVmodel but the issue still persist. Please help

@LudovicSchorpp
Copy link
Member

The variance of the covmodel (w parameter) must also be modified according to the expected variance of the surface that you want to model. In the example it is equal to 2 but must be equal to the variance of the elevation data of the top surface of this unit.
To know this value you can type the following command:

np.var(Unit.surface.z)

Where you replace Unit by the variable that you have chosen for your unit.

But I also strongly suggest to use the following command to automatically infer the variograms for each unit if you have enough data.

T1.estimate_surf_params(auto=True, hmax=500)

Just make sure to adjust the hmax parameter to value large enough, it is site specific so there is no general rule to choose it but should be around 10-50% of the maximal distance possible in your modeling area.

Finally, note that these informations only stand for the surfaces and for the facies you will also have to define variograms, with appropriate variances (which are not defined in the same way that for surface covmodels) and ranges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants