%matplotlib widget import matplotlib.pyplot as plt plt.ioff() # turn of warnings import warnings warnings.filterwarnings('ignore')
We can even generate the same field realisation on different grids. Let's try to merge two unstructured rectangular fields.
import numpy as np import gstools as gs # creating our own unstructured grid seed = gs.random.MasterRNG(20220425) rng = np.random.RandomState(seed()) x = rng.randint(0, 100, size=10000) y = rng.randint(0, 100, size=10000) model = gs.Exponential(dim=2, var=1, len_scale=[12, 3], angles=np.pi / 8) srf = gs.SRF(model, seed=20220425) field1 = srf((x, y)) srf.plot()
But now we extend the field on the right hand side by creating a new unstructured grid and calculating a field with the same parameters and the same seed on it:
# new grid seed = gs.random.MasterRNG(20220425) rng = np.random.RandomState(seed()) x2 = rng.randint(99, 150, size=10000) y2 = rng.randint(20, 80, size=10000) field2 = srf((x2, y2)) ax = srf.plot() ax.tricontourf(x, y, field1.T, levels=256) ax.set_aspect("equal")
The slight mismatch where the two fields were merged is merely due to interpolation problems of the plotting routine. You can convince yourself be increasing the resolution of the grids by a factor of 10.
Of course, this merging could also have been done by appending the grid
(x2, y2) to the original grid
(x, y) before generating the field.
But one application scenario would be to generate hugh fields, which would not
fit into memory anymore.