gempy
gempy copied to clipboard
Influence surface thickness
Is anywhere a parameter which I can set to influence the varying surface thickness?
Where the numbers are, there are borehole data points. I have set the smooth to the points to zero.
As you can see in the picture above only at the boreholes, the surface thickness between the red and yellow lines, which are in one series, is bigger, but i want, that it in-/ and decrease smoother like this:
For the second picture I set the yellow and red surface-lines to different series, but thats geologically not correct.
Hi domist07, can you maybe sent some more surrounding data and scale info? Based on your sections it is difficult to see how other input data might have an effect or how the effect scales in relation to your whole model. I have one or two ideas how to handle this but a little more context would be very helpful.
The extend of the wohle project is:
187 x 1191 x 74 m
The additional data:
Structure
isLith True
isFault True
number faults 2
number surfaces 6
number series 6
number surfaces per series [1, 1, 1, 2, 1, 0]
len surfaces surface_points [3, 3, 27, 27, 28, 28]
len series surface_points [3, 3, 27, 55, 28, 0]
len series orientations [3, 3, 27, 55, 28, 0]
Options
dtype float64
output geology
theano_optimizer fast_run
device cpu
verbosity []
Kriging
range 1207.51
$C_o$ 34716.2
drift equations [3, 3, 3, 3, 3, 3]
nugget grad 0.01
nugget scalar 1e-06
Rescaling
rescaling factor 2301.18
3D Plot of the area:
What else informations do you need?
Hi, so why I was asking for more details: In general there has to be some input data that causes the yellow layer to bend up, and the red layer to bend down between the boreholes. Otherwise it should more or less be just a straight interpolation between those points. Even with the other info you provided, it is hard to tell which data points cause this behavior.
One thing you could try is play around with the range of the underlying variogram/covariance function. I checked but there seems to be an issue and right now it is difficult/impossible to change it properly. There is a new pull request (#325 ) that showcases the problem and I hope we can fix it soon so that you can try if that offers a solution.
How can I set the range of the variogram/covariance function? Is this the right command: geo_data.modify_kriging_parameters('range', XXX)
?
OK - the correct way to do it (#325) is to geo_data.modify_kriging_parameters('range', XXX)
and then recompile the interpolator (interp_data = gp.set_interpolation_data()
with update_kriging
flag set to False
.
You can play around with it a little, smaller ranges should make the problem worse, big ranges might improve it. Not sure if that is the solution. You can also try to set the "global" nugget effect to zero with the same function (using "nugget grad"
instead of "range"
but that should be covered by your smoothing factor.
The global nugget effect is not a thing anymore. I am going to leave the issue open until I delete those properties. @javoha if you have a strong opinion add a method to change the "global" nugget that under the hood calls geo_model.modify_surface_points('all', smooth=X)
Related to #266
The Notebook regarding the problem: https://nbviewer.jupyter.org/github/domist07/gempy/blob/master/notebooks/Issue322/Issue322.ipynb
Hi @domist07 ,
sorry again for the late answer. With the material you provided I was able to get a smoother result by changing the C_0 parameter (corresponding to the nugget effect) in the kriging parameters to a very small value. Here is how I did it (I think you might have forgotten to update the interpolator properly):
geo_data.modify_kriging_parameters('$C_o$', 0.1)
interp_data = gp.set_interpolation_data(geo_data, update_kriging=False)
gp.compute_model(geo_data, sort_surfaces=False, compute_mesh=True)
gp._plot.plot_2d(geo_data, section_names="LS2", show_lith=False, show_data=False, figsize=(30,30))
And here are the results: Before and after:
Yes that works, thank you!
Therefore I've found the "initial" error:
If I set geo_data.orientations.df['smooth'] = 0.0001 # or smaller
after loading the orientations, the problem arrises 🤔. Independet what C_0 I set. Have you any idea why the orientations influence the surface thickness?