gstools.field.generator.IncomprRandMeth
- class gstools.field.generator.IncomprRandMeth(model, *, mean_velocity=1.0, mode_no=1000, seed=None, sampling='auto', **kwargs)[source]
Bases:
RandMethRandMeth for incompressible random vector fields.
- Parameters:
model (
CovModel) – covariance modelmean_velocity (
float, optional) – the mean velocity in x-directionmode_no (
int, optional) – number of Fourier modes. Default:1000seed (
intorNone, optional) – the seed of the random number generator. If “None”, a random seed is used. Default:Nonesampling (
str, optional) –Sampling strategy. Either
“auto”: select best strategy depending on given model
“inversion”: use inversion method
“mcmc”: use mcmc sampling
**kwargs – Placeholder for keyword-args
Notes
The Randomization method is used to generate isotropic spatial incompressible random vector fields characterized by a given covariance model. The equation is [Kraichnan1970]:
\[u_i\left(x\right)= \bar{u_i} \delta_{i1} + \bar{u_i}\sqrt{\frac{\sigma^{2}}{N}}\cdot \sum_{j=1}^{N}p_i(k_{j})\left( Z_{1,j}\cdot\cos\left(\left\langle k_{j},x\right\rangle \right)+ Z_{2,j}\cdot\sin\left(\left\langle k_{j},x\right\rangle \right) \right)\]where:
\(\bar u\) : mean velocity in \(e_1\) direction
\(N\) : fourier mode number
\(Z_{k,j}\) : random samples from a normal distribution
\(k_j\) : samples from the spectral density distribution of the covariance model
\(p_i(k_j) = e_1 - \frac{k_i k_1}{k^2}\) : the projector ensuring the incompressibility
References
[Kraichnan1970]Kraichnan, R. H., “Diffusion by a random velocity field.”, The physics of fluids, 13(1), 22-31., (1970)
- Attributes:
mode_noint: Number of modes in the randomization method.modelCovModel: Covariance model of the spatial random field.namestr: Name of the generator.samplingstr: Sampling strategy.seedint: Seed of the master RNG.value_typestr: Type of the field values (scalar, vector).zero_varbool: Whether Covariance model has zero variance.
Methods
__call__(pos[, add_nugget])Calculate the random modes for the randomization method.
get_nugget(shape)Generate normal distributed values for the nugget simulation.
reset_seed([seed])Recalculate the random amplitudes and wave numbers with the given seed.
update([model, seed])Update the model and the seed.
- __call__(pos, add_nugget=True)[source]
Calculate the random modes for the randomization method.
This method calls the summate_incompr_* Rust or Cython methods, which are the heart of the randomization method. In this class the method contains a projector to ensure the incompressibility of the vector field.
- Parameters:
pos ((d, n),
numpy.ndarray) – the position tuple with d dimensions and n points.add_nugget (
bool) – Whether to add nugget noise to the field.
- Returns:
the random modes
- Return type:
- get_nugget(shape)
Generate normal distributed values for the nugget simulation.
- Parameters:
shape (
tuple) – the shape of the summed modes- Returns:
nugget – the nugget in the same shape as the summed modes
- Return type:
- reset_seed(seed=nan)
Recalculate the random amplitudes and wave numbers with the given seed.
- Parameters:
seed (
intorNoneornumpy.nan, optional) – the seed of the random number generator. IfNone, a random seed is used. Ifnumpy.nan, the actual seed will be kept. Default:numpy.nan
Notes
Even if the given seed is the present one, modes will be recalculated.
- update(model=None, seed=nan)
Update the model and the seed.
If model and seed are not different, nothing will be done.
- property seed
Seed of the master RNG.
Notes
If a new seed is given, the setter property not only saves the new seed, but also creates new random modes with the new seed.
- Type: