RandomFields
Random Fields
Python package to generate random fields in 2D or 3D on unstructured grids.
Background information
The random fields are generated using gstools.
Currently, the following covariance models are available:
- Gaussian
- Exponential
- Matern
- Linear
Installation
To install the package, run the following command in the terminal:
pip install git+https://github.com/StemVibrations/RandomFields
Tutorial
Example in 2D
In this example we generate a random field on a 2D regular grid.
First you need to import the packages:
import numpy as np
from random_fields.generate_field import RandomFields, ModelName
from random_fields.utils import plot2D
Then you need to define the grid:
x = np.linspace(0, 100, 50)
y = np.linspace(0, 50, 50)
x, y = np.meshgrid(x, y)
In this example we create a mesh of 50x50 points between 0 and 100 in x and 0 and 50 in y direction.
Then we define the random field properties:
nb_dimensions = 2
mean = 10
variance = 2
vertical_scale_fluctuation = 10
anisotropy = [1]
angle = [0]
model_rf = ModelName.Gaussian
In this example we use a Gaussian covariance model.
Then we create the random field:
rf = RandomFields(model_rf, nb_dimensions, mean, variance, vertical_scale_fluctuation, anisotropy, angle, seed=14)
rf.generate(np.array([x.ravel(), y.ravel()]).T)
To visualise the results you can run:
plot2D([np.array([x.ravel(), y.ravel()]).T], [rf.random_field], title="Random Field", output_folder="./", output_name="random_field.png")
The result is the following random field:
Example in 3D
In this example we generate a random field on a 3D regular grid.
First you need to import the packages:
import numpy as np
from random_fields.generate_field import RandomFields, ModelName
from random_fields.utils import plot3D
Then you need to define the grid:
x = np.linspace(0, 100, 50)
y = np.linspace(0, 50, 50)
z = np.linspace(0, 25, 25)
x, y, z = np.meshgrid(x, y, z)
In this example we create a mesh of 50x50x25 points between 0 and 100 in x, 0 and 50 in y direction and 0 and 25 in z direction.
Then we define the random field properties:
nb_dimensions = 3
mean = 10
variance = 2
vertical_scale_fluctuation = 10
anisotropy = [5, 5]
angle = [0, 0]
model_rf = ModelName.Gaussian
Then we create the random field:
rf = RandomFields(model_rf, nb_dimensions, mean, variance, vertical_scale_fluctuation, anisotropy, angle, seed=14)
rf.generate(np.array([x.ravel(), y.ravel(), z.ravel()]).T)
To visualise the results you can run:
plot3D([np.array([x.ravel(), y.ravel(), z.ravel()]).T], [rf.random_field], title="Random Field", output_folder="./", output_name="random_field_3D.png")
The result is the following random field:
Metadata
Release files for random-fields 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| random_fields-1.0.1.tar.gz | 6.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| random_fields-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.2 kB
Release files / random_fields-1.0.1.tar.gz
| Download URL | random_fields-1.0.1.tar.gz |
|---|---|
| Size | 6.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
21d780a4ce671752dcd1a67413dae8e97c0488537edd823988a95128fe52b9e0
|
|
BLAKE2b-256 checksum How to use checksums |
f445438cde25aecb746220c361a7626576460a262b5e98f547f48e9cacd80c9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.11
|
Release files / random_fields-1.0.1-py3-none-any.whl
| Download URL | random_fields-1.0.1-py3-none-any.whl |
|---|---|
| Size | 5.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ed88d2ae8b870e01ac909131e37dee4be90115ea81b8be0c10b16bbe9ec5116f
|
|
BLAKE2b-256 checksum How to use checksums |
91118269b389a804859bd458b9b4a6ac1b9aa7aae089ec3cfd8edc246cb4e81c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.11
|