gstlearn  1.0.0
CCC
CalcSimuTurningBands Class Reference

#include <CalcSimuTurningBands.hpp>

Inheritance diagram for CalcSimuTurningBands:
ACalcSimulation ACalcInterpolator ACalcDbToDb ACalculator

Public Member Functions

 CalcSimuTurningBands (int nbsimu=0, int nbtuba=0, bool flag_check=false, int seed=4324324)
 
 CalcSimuTurningBands (const CalcSimuTurningBands &r)=delete
 
CalcSimuTurningBandsoperator= (const CalcSimuTurningBands &r)=delete
 
virtual ~CalcSimuTurningBands ()
 
int getNBtuba () const
 
void setNBtuba (int nbtuba)
 
int getNDirs () const
 
int simulate (Db *dbin, Db *dbout, Model *model, ANeigh *neigh, int icase, int flag_bayes=false, const VectorDouble &dmean=VectorDouble(), const VectorDouble &dcov=VectorDouble(), bool flag_pgs=false, bool flag_gibbs=false, bool flag_dgm=false)
 
int simulatePotential (Db *dbiso, Db *dbgrd, Db *dbtgt, Db *dbout, Model *model, double delta)
 
const VectorDoublegetBayesCov () const
 
void setBayesCov (const VectorDouble &dcov)
 
const VectorDoublegetBayesMean () const
 
void setBayesMean (const VectorDouble &dmean)
 
bool isFlagCheck () const
 
void setFlagCheck (bool flag_check)
 
bool isFlagBayes () const
 
void setFlagBayes (bool flag_bayes)
 
void setFlagDgm (bool flag_dgm)
 
bool isFlagGibbs () const
 
void setFlagGibbs (bool flag_gibbs)
 
bool isFlagPgs () const
 
void setFlagPgs (bool flag_pgs)
 
int getIcase () const
 
void setIcase (int icase)
 
int getNbtuba () const
 
void setNbtuba (int nbtuba)
 
- Public Member Functions inherited from ACalcSimulation
 ACalcSimulation (int nbimu, int seed=4324324)
 
 ACalcSimulation (const ACalcSimulation &r)=delete
 
ACalcSimulationoperator= (const ACalcSimulation &r)=delete
 
virtual ~ACalcSimulation ()
 
int getSeed () const
 
int getNbSimu () const
 
void setSeed (int seed)
 
void setNbSimu (int nbsimu)
 
- Public Member Functions inherited from ACalcInterpolator
 ACalcInterpolator ()
 
 ACalcInterpolator (const ACalcInterpolator &r)=delete
 
ACalcInterpolatoroperator= (const ACalcInterpolator &r)=delete
 
virtual ~ACalcInterpolator ()
 
void setModel (Model *model)
 
void setNeigh (ANeigh *neigh)
 
ModelgetModel () const
 
ANeighgetNeigh () const
 
bool hasModel (bool verbose=true) const
 
bool hasNeigh (bool verbose=true) const
 
- Public Member Functions inherited from ACalcDbToDb
 ACalcDbToDb (bool mustShareSameSpaceDimension=true)
 
 ACalcDbToDb (const ACalcDbToDb &r)=delete
 
ACalcDbToDboperator= (const ACalcDbToDb &r)=delete
 
virtual ~ACalcDbToDb ()
 
void setDbin (Db *dbin)
 
void setDbout (Db *dbout)
 
void setNamingConvention (const NamingConvention &namconv)
 
void setMustShareSpaceDimension (bool mustShareSpaceDimension)
 
DbgetDbin () const
 
DbgetDbout () const
 
DbGridgetGridin () const
 
DbGridgetGridout () const
 
bool hasDbin (bool verbose=true) const
 
bool hasDbout (bool verbose=true) const
 
bool isGridIn (bool verbose=true) const
 
bool isGridOut (bool verbose=true) const
 
- Public Member Functions inherited from ACalculator
 ACalculator ()
 
 ACalculator (const ACalculator &r)=delete
 
ACalculatoroperator= (const ACalculator &r)=delete
 
virtual ~ACalculator ()
 
bool run ()
 

Static Public Member Functions

static bool isTurningBandsWorkable (const Model *model)
 

Private Member Functions

virtual bool _check () override
 
virtual bool _preprocess () override
 
virtual bool _run () override
 
virtual bool _postprocess () override
 
virtual void _rollback () override
 
bool _resize ()
 
void _simulatePoint (Db *db, const VectorDouble &aic, int icase, int shift)
 
void _simulateGrid (DbGrid *db, const VectorDouble &aic, int icase, int shift)
 
void _simulateNugget (Db *db, const VectorDouble &aic, int icase)
 
void _simulateGradient (Db *dbgrd, const VectorDouble &aic, double delta)
 
void _simulateTangent (Db *dbtgt, const VectorDouble &aic, double delta)
 
void _meanCorrect (Db *dbout, int icase)
 
void _difference (Db *dbin, Model *model, int icase, bool flag_pgs=false, bool flag_gibbs=false, bool flag_dgm=false)
 
void _updateData2ToTarget (Db *dbin, Db *dbout, int icase, bool flag_pgs=false, bool flag_dgm=false)
 
void _checkGaussianData2Grid (Db *dbin, Db *dbout, Model *model) const
 
void _setCodirAng (int ibs, int idir, double value)
 
void _setCodirTmin (int ibs, double value)
 
void _setCodirTmax (int ibs, double value)
 
void _setCodirScale (int ibs, double value)
 
void _setCodirT00 (int ibs, double value)
 
void _setCodirDXP (int ibs, double value)
 
void _setCodirDYP (int ibs, double value)
 
void _setCodirDZP (int ibs, double value)
 
VectorDouble _getCodirAng (int ibs) const
 
double _getCodirAng (int ibs, int idir) const
 
double _getCodirScale (int ibs)
 
double _getCodirT00 (int ibs) const
 
double _getCodirDXP (int ibs) const
 
double _getCodirDYP (int ibs) const
 
double _getCodirDZP (int ibs) const
 
double _getCodirTmin (int ibs) const
 
double _getCodirTmax (int ibs) const
 
int _getAddressBand (int ivar, int is, int ib, int isimu)
 
void _setSeedBand (int ivar, int is, int ib, int isimu, int seed)
 
int _getSeedBand (int ivar, int is, int ib, int isimu)
 
void _rotateDirections (double a[3], double theta)
 
int _generateDirections (const Db *dbout)
 
void _minmax (const Db *db)
 
void _setDensity ()
 
ECov _particularCase (const ECov &type, double param)
 
int _initializeSeedBands ()
 
VectorDouble _createAIC ()
 
double _getAIC (const VectorDouble &aic, int icov, int ivar, int jvar)
 
double _computeScale (double alpha, double scale)
 
VectorDouble _migration (double tmin, double tmax, double scale, double eps=EPSILON5)
 
VectorDouble _dilution (double tmin, double tmax, double mesh, double *start)
 
void _spectral (const ECov &type, double scale, double param, double *omega, double *phi)
 
double _computeScaleKB (double param, double scale)
 
void _power1D (int ib, double scale, double alpha, double *omega, double *phi, double *theta_3, double *correc0)
 
void _spline1D (int ib, double scale, int k, double *omega, double *phi, double *xi_3, double *correc0)
 
void _irfProcess (const ECov &type, const VectorDouble &t, VectorDouble &v0, VectorDouble &v1, VectorDouble &v2)
 
int _rankInPoisson (int def_rank, double t0, const VectorDouble &t)
 
int _rankRegular (double t0, double tdeb, double scale)
 
double _irfCorrec (const ECov &type, double theta1, double scale)
 
double _irfProcessSample (const ECov &type, int nt0, double t0, const VectorDouble &t, const VectorDouble &v0, const VectorDouble &v1, const VectorDouble &v2)
 
void _getOmegaPhi (int ibs, double omega, double phi, double *cxp, double *sxp, double *cyp, double *syp, double *czp, double *szp, double *c0z, double *s0z)
 

Private Attributes

int _nbtuba
 
int _iattOut
 
int _icase
 
bool _flagCheck
 
bool _flagBayes
 
bool _flagPGS
 
bool _flagGibbs
 
bool _flagDGM
 
VectorString _nameCoord
 
VectorDouble _bayesMean
 
VectorDouble _bayesCov
 
int _npointSimulated
 
double _field
 
double _theta
 
VectorInt _seedBands
 
std::vector< TurningDirection_codirs
 

Additional Inherited Members

- Protected Member Functions inherited from ACalcInterpolator
virtual int _getNDim () const override
 
virtual int _getNVar () const override
 
virtual int _getNCova () const
 
int _centerDataToGrid (DbGrid *dbgrid)
 
- Protected Member Functions inherited from ACalcDbToDb
int _addVariableDb (int whichDb, int status, const ELoc &locatorType, int locatorIndex=0, int number=1, double valinit=0.)
 
void _renameVariable (int whichDb, const VectorString &names, const ELoc &locatorType, int nvar, int iptr, const String &name, int count, bool flagSetLocator=true, int shift=0)
 
void _storeInVariableList (int whichDb, int status, const VectorInt &iuids)
 
int _expandInformation (int mode, const ELoc &locatorType)
 
void _cleanVariableDb (int status)
 
Db_whichDb (int whichDb)
 
String _identifyVariable (int iuid) const
 

Constructor & Destructor Documentation

◆ CalcSimuTurningBands() [1/2]

CalcSimuTurningBands::CalcSimuTurningBands ( int  nbsimu = 0,
int  nbtuba = 0,
bool  flag_check = false,
int  seed = 4324324 
)

◆ CalcSimuTurningBands() [2/2]

CalcSimuTurningBands::CalcSimuTurningBands ( const CalcSimuTurningBands r)
delete

◆ ~CalcSimuTurningBands()

CalcSimuTurningBands::~CalcSimuTurningBands ( )
virtual

Member Function Documentation

◆ _check()

bool CalcSimuTurningBands::_check ( )
overrideprivatevirtual

Reimplemented from ACalcSimulation.

◆ _checkGaussianData2Grid()

void CalcSimuTurningBands::_checkGaussianData2Grid ( Db dbin,
Db dbout,
Model model 
) const
private

Check/Show the data (gaussian) against the closest grid node

Parameters
[in]dbinInput Db structure
[in]dboutOutput Db grid structure
[in]modelModel structure
Remarks
Attributes ELoc::SIMU and ELoc::GAUSFAC (for PGS) are mandatory
Tests have only been produced for icase=0

◆ _computeScale()

double CalcSimuTurningBands::_computeScale ( double  alpha,
double  scale 
)
private

Calculate the scale for 1D process for the stable model

Returns
Scale parameter of the 1D process to simulate
Parameters
[in]alphaThird parameter of the stable covariance model
[in]scaleScale parameter of the model

◆ _computeScaleKB()

double CalcSimuTurningBands::_computeScaleKB ( double  param,
double  scale 
)
private

Calculate the scale for 1D process for the K-Bessel model (param<0.5)

Returns
Scale parameter of the 1D process to simulate (param<0.5)
Parameters
[in]paramThird parameter of the K-Bessel covariance model
[in]scaleScale parameter of the model

◆ _createAIC()

VectorDouble CalcSimuTurningBands::_createAIC ( )
private

Calculate the linear model of coregionalization starting from the coregionalization matrix

Returns
The Vector containing the AIC matrix
Remarks
In case of error, the message is printed by the routine
Warning: in the case of linked drift, the test of definite
positiveness is bypassed as we are not in the scope of the
linear model of coregionalization anymore.
As a consequence the array "aic()" is not evaluated

◆ _difference()

void CalcSimuTurningBands::_difference ( Db dbin,
Model model,
int  icase,
bool  flag_pgs = false,
bool  flag_gibbs = false,
bool  flag_dgm = false 
)
private

Convert the non conditional simulations at the data points into simulation error

Parameters
[in]dbinInput Db structure
[in]modelModel structure
[in]icaseCase for PGS or GRF
[in]flag_pgs1 if called from PGS
[in]flag_gibbs1 if called from Gibbs
[in]flag_dgm1 if in the Discrete Gaussian Model

◆ _dilution()

VectorDouble CalcSimuTurningBands::_dilution ( double  tmin,
double  tmax,
double  mesh,
double *  start 
)
private

Generate a dilution process

Parameters
[in]tminminimum value
[in]tmaxmaximum value
[in]meshmesh of the random walk
[out]startinitial time

◆ _generateDirections()

int CalcSimuTurningBands::_generateDirections ( const Db dbout)
private

Generate directions according to Van Der Corput algorithm. The count of directions returned is the product of nbtuba by the number of basic structures

Parameters
[in]dboutDb structure

◆ _getAddressBand()

int CalcSimuTurningBands::_getAddressBand ( int  ivar,
int  is,
int  ib,
int  isimu 
)
private

◆ _getAIC()

double CalcSimuTurningBands::_getAIC ( const VectorDouble aic,
int  icov,
int  ivar,
int  jvar 
)
private

◆ _getCodirAng() [1/2]

VectorDouble CalcSimuTurningBands::_getCodirAng ( int  ibs) const
inlineprivate

◆ _getCodirAng() [2/2]

double CalcSimuTurningBands::_getCodirAng ( int  ibs,
int  idir 
) const
inlineprivate

◆ _getCodirDXP()

double CalcSimuTurningBands::_getCodirDXP ( int  ibs) const
inlineprivate

◆ _getCodirDYP()

double CalcSimuTurningBands::_getCodirDYP ( int  ibs) const
inlineprivate

◆ _getCodirDZP()

double CalcSimuTurningBands::_getCodirDZP ( int  ibs) const
inlineprivate

◆ _getCodirScale()

double CalcSimuTurningBands::_getCodirScale ( int  ibs)
inlineprivate

◆ _getCodirT00()

double CalcSimuTurningBands::_getCodirT00 ( int  ibs) const
inlineprivate

◆ _getCodirTmax()

double CalcSimuTurningBands::_getCodirTmax ( int  ibs) const
inlineprivate

◆ _getCodirTmin()

double CalcSimuTurningBands::_getCodirTmin ( int  ibs) const
inlineprivate

◆ _getOmegaPhi()

void CalcSimuTurningBands::_getOmegaPhi ( int  ibs,
double  omega,
double  phi,
double *  cxp,
double *  sxp,
double *  cyp,
double *  syp,
double *  czp,
double *  szp,
double *  c0z,
double *  s0z 
)
private

◆ _getSeedBand()

int CalcSimuTurningBands::_getSeedBand ( int  ivar,
int  is,
int  ib,
int  isimu 
)
private

◆ _initializeSeedBands()

int CalcSimuTurningBands::_initializeSeedBands ( )
private

Initialize the array of seeds for the generation of a simulation using the Turning Bands method

Returns
Error return code : 1 for problem; 0 otherwise

◆ _irfCorrec()

double CalcSimuTurningBands::_irfCorrec ( const ECov &  type,
double  theta1,
double  scale 
)
private

Calculate the correction factor for IRF_k models

Returns
Correction factor
Parameters
[in]typetype of polynomial generalized covariance
[in]theta1Equal to inverse of theta value
[in]scaleRange of the model

◆ _irfProcess()

void CalcSimuTurningBands::_irfProcess ( const ECov &  type,
const VectorDouble t,
VectorDouble v0,
VectorDouble v1,
VectorDouble v2 
)
private

Generates the process constituted by independent gaussian variables along a 1D Poisson process. The process consists in the integration(s) of the previous process Perform the core allocation

Parameters
[in]typedegree of the IRF -> number of integrations
[in]tVector of Poisson delimitors
[out]v0Wiener-Levy process
[out]v1First integration of the Wiener-Levy process
[out]v2Second integration of the Wiener-Levy process
Remarks
This procedure allocates memory that should be freed

◆ _irfProcessSample()

double CalcSimuTurningBands::_irfProcessSample ( const ECov &  type,
int  nt0,
double  t0,
const VectorDouble t,
const VectorDouble v0,
const VectorDouble v1,
const VectorDouble v2 
)
private

Sample the Wiener-Levy (integrated) process

Parameters
[in]typetype of polynomial generalized covariance
[in]nt0Rank of the Poisson point
[in]t0starting time
[in]tPoisson point process
[in]v0Wiener-Levy process
[in]v1First integration of the Wiener-Levy process
[in]v2Second integration of the Wiener-Levy process

◆ _meanCorrect()

void CalcSimuTurningBands::_meanCorrect ( Db dbout,
int  icase 
)
private

Correct for the mean in the case of non-conditional simulations

Parameters
[in]dboutOutput Db structure
[in]icaseRank of PGS or GRF

◆ _migration()

VectorDouble CalcSimuTurningBands::_migration ( double  tmin,
double  tmax,
double  scale,
double  eps = EPSILON5 
)
private

Generate a migration process

Parameters
[in]tminminimum value
[in]tmaxmaximum value
[in]scalescale of the exponential
[in]epsEpsilon value

◆ _minmax()

void CalcSimuTurningBands::_minmax ( const Db db)
private

Calculates the data extension for a set of turning bands

Parameters
[in]dbDb structure

◆ _particularCase()

ECov CalcSimuTurningBands::_particularCase ( const ECov &  type,
double  param 
)
private

Particular case of the stable model. It must be turned into:

  • Exponential : when param is too close to 1
  • Gaussian : when param is too close to 2

Particular case of the K-Bessel model. It must be turned into:

  • Exponential : when param is too close to 0.5
Returns
The modified type

◆ _postprocess()

bool CalcSimuTurningBands::_postprocess ( )
overrideprivatevirtual

Reimplemented from ACalculator.

◆ _power1D()

void CalcSimuTurningBands::_power1D ( int  ib,
double  scale,
double  alpha,
double *  omega,
double *  phi,
double *  theta_3,
double *  correc0 
)
private

Generate the 1D stochastic process

Parameters
[in]ibRank of the turning band
[in]scalescale factor
[in]alphapower of the variogram h^alpha
[out]omegaperiod = 2piR where R is a second kind beta variable with parameters 1-alpha/2 and alpha/2
[out]phiuniform phase lying within [0,2 PI]
[out]theta_3value of theta_alpha,3(R)
[out]correc0value to substract from Y_alpha,2 in order to avoid numerical problems when R is very small
Remarks
Y_alpha_1=theta_alpha_1(R)cos(2pi R.x+phi)
used to simulate a GRF with a power semi-variogram h^alpha
according to the method proposed in
Emery, X. and Lantuejoul, C. (2008)
A spectral approach to simulating intrinsec random fields with power
and spline generalized covariance.
In Computational Geosciences 12:121-132

◆ _preprocess()

bool CalcSimuTurningBands::_preprocess ( )
overrideprivatevirtual

Reimplemented from ACalcSimulation.

◆ _rankInPoisson()

int CalcSimuTurningBands::_rankInPoisson ( int  def_rank,
double  t0,
const VectorDouble t 
)
private

Returns the rank of the point t0 in the Poisson point process

Parameters
[in]def_rankRank of the Poisson point
[in]t0starting time
[in]tPoisson point process

◆ _rankRegular()

int CalcSimuTurningBands::_rankRegular ( double  t0,
double  tdeb,
double  scale 
)
private

Returns the rank of the point t0 in a regular pavement

Parameters
[in]t0starting time
[in]tdeborigin on the line
[in]scalescaling factor

◆ _resize()

bool CalcSimuTurningBands::_resize ( )
private

◆ _rollback()

void CalcSimuTurningBands::_rollback ( )
overrideprivatevirtual

Reimplemented from ACalculator.

◆ _rotateDirections()

void CalcSimuTurningBands::_rotateDirections ( double  a[3],
double  theta 
)
private

Perform the rotation of a set of normalized direction coefficients

Parameters
[in]aRotation direction
[in]thetaRotation angle

◆ _run()

bool CalcSimuTurningBands::_run ( )
overrideprivatevirtual

Implements ACalculator.

◆ _setCodirAng()

void CalcSimuTurningBands::_setCodirAng ( int  ibs,
int  idir,
double  value 
)
inlineprivate

◆ _setCodirDXP()

void CalcSimuTurningBands::_setCodirDXP ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirDYP()

void CalcSimuTurningBands::_setCodirDYP ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirDZP()

void CalcSimuTurningBands::_setCodirDZP ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirScale()

void CalcSimuTurningBands::_setCodirScale ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirT00()

void CalcSimuTurningBands::_setCodirT00 ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirTmax()

void CalcSimuTurningBands::_setCodirTmax ( int  ibs,
double  value 
)
inlineprivate

◆ _setCodirTmin()

void CalcSimuTurningBands::_setCodirTmin ( int  ibs,
double  value 
)
inlineprivate

◆ _setDensity()

void CalcSimuTurningBands::_setDensity ( )
private

Calculate the Poisson intensity for the generation of the Wiener-Levy along the line

Remarks
The average number of points per band is calculated:
- so as too have in average one band between two target
points (either data or target)
- to have a number of Poisson points per band lying within
[nmini; nmaxi]

◆ _setSeedBand()

void CalcSimuTurningBands::_setSeedBand ( int  ivar,
int  is,
int  ib,
int  isimu,
int  seed 
)
private

◆ _simulateGradient()

void CalcSimuTurningBands::_simulateGradient ( Db dbgrd,
const VectorDouble aic,
double  delta 
)
private

Perform non-conditional simulations on a set of gradient points using Turning Bands method.

Parameters
[in]dbgrdGradient Db structure
[in]aicArray 'aic'
[in]deltaValue of the increment
Remarks
The simulated gradients are stored as follows:
idim * nbsimu + isimu (for simulation at first point)
idim * nbsimu + isimu + ndim * nbsimu (for simulation at 2nd point)
At the end, the simulated gradient is stored at first point

◆ _simulateGrid()

void CalcSimuTurningBands::_simulateGrid ( DbGrid db,
const VectorDouble aic,
int  icase,
int  shift 
)
private

Perform non-conditional simulations on a grid using the Turning Bands method

Parameters
[in]dbDb structure
[in]aicArray 'aic'
[in]icaseRank of PGS or GRF
[in]shiftShift before writing the simulation result

◆ _simulateNugget()

void CalcSimuTurningBands::_simulateNugget ( Db db,
const VectorDouble aic,
int  icase 
)
private

Add the contribution of the nugget effect to the non-conditional simulations

Parameters
[in]dbDb structure
[in]aicArray 'aic'
[in]icaseRank of PGS or GRF

◆ _simulatePoint()

void CalcSimuTurningBands::_simulatePoint ( Db db,
const VectorDouble aic,
int  icase,
int  shift 
)
private

Perform non-conditional simulations on a set of points using Turning Bands method.

Parameters
[in]dbDb structure
[in]aicArray 'aic'
[in]icaseRank of PGS or GRF
[in]shiftShift before writing the simulation result

◆ _simulateTangent()

void CalcSimuTurningBands::_simulateTangent ( Db dbtgt,
const VectorDouble aic,
double  delta 
)
private

Perform non-conditional simulations on a set of tangent points using Turning Bands method.

Parameters
[in]dbtgtTangent Db structure
[in]aicArray 'aic'
[in]deltaValue of the increment
Remarks
Warning: To perform the simulation of the tangent, we must
simulated the gradients first. So we need to dimension the
simulation outcome variables as for the gradients

◆ _spectral()

void CalcSimuTurningBands::_spectral ( const ECov &  type,
double  scale,
double  param,
double *  omega,
double *  phi 
)
private

Prepare a spectral method

Parameters
[in]typetype of method for generating the period
[in]scalescale factor
[in]paramfactor for the period
[out]omegaresulting period
[out]phiuniform phase lying within [0,2 PI]

◆ _spline1D()

void CalcSimuTurningBands::_spline1D ( int  ib,
double  scale,
int  k,
double *  omega,
double *  phi,
double *  xi_3,
double *  correc0 
)
private

Generate the 1D stochastic process for spline covariance

Parameters
[in]ibRank of the turning band
[in]scalescale factor
[in]kpower of the variogram h^(2k)log(h)
[out]omegaperiod = 2piR where R is a second kind beta variable with parameters 1/2 and 1/2
[out]phiuniform phase lying within [0,2 PI]
[out]xi_3value of xi_2k,3(R)
[out]correc0value to substract from S_2k,3 in order to avoid numerical problems when R is very small
Remarks
Compute the random elements
used to simulate a GRF with a power semi-variogram GC h^(2k)log(h)
according to the method proposed in
Emery, X. and Lantuejoul, C. (2008)
A spectral approach to simulating intrinsec random fields with power
and spline generalized covariance.
In Computational Geosciences 12:121-132

◆ _updateData2ToTarget()

void CalcSimuTurningBands::_updateData2ToTarget ( Db dbin,
Db dbout,
int  icase,
bool  flag_pgs = false,
bool  flag_dgm = false 
)
private

Update the conditional simulations when the target coincides with a data point

Parameters
[in]dbinInput Db structure
[in]dboutOutput Db structure
[in]icaseCase for PGS or GRF
[in]flag_pgs1 if called from PGS
[in]flag_dgm1 for the Discrete Gaussian Model
Remarks
This migration is not performed in the case where data point
coincide with the target artificially. This is the case
for the Discrete Gaussian Model (DGM) where data have been
migrated to the cell center to mimic a point randomized
within a cell

◆ getBayesCov()

const VectorDouble& CalcSimuTurningBands::getBayesCov ( ) const
inline

◆ getBayesMean()

const VectorDouble& CalcSimuTurningBands::getBayesMean ( ) const
inline

◆ getIcase()

int CalcSimuTurningBands::getIcase ( ) const
inline

◆ getNBtuba()

int CalcSimuTurningBands::getNBtuba ( ) const
inline

◆ getNbtuba()

int CalcSimuTurningBands::getNbtuba ( ) const
inline

◆ getNDirs()

int CalcSimuTurningBands::getNDirs ( ) const
inline

◆ isFlagBayes()

bool CalcSimuTurningBands::isFlagBayes ( ) const
inline

◆ isFlagCheck()

bool CalcSimuTurningBands::isFlagCheck ( ) const
inline

◆ isFlagGibbs()

bool CalcSimuTurningBands::isFlagGibbs ( ) const
inline

◆ isFlagPgs()

bool CalcSimuTurningBands::isFlagPgs ( ) const
inline

◆ isTurningBandsWorkable()

bool CalcSimuTurningBands::isTurningBandsWorkable ( const Model model)
static

Check if the Model can be simulated using Turning Bands

Returns
True if the Model is valid; 0 otherwise
Parameters
[in]modelModel structure

◆ operator=()

CalcSimuTurningBands& CalcSimuTurningBands::operator= ( const CalcSimuTurningBands r)
delete

◆ setBayesCov()

void CalcSimuTurningBands::setBayesCov ( const VectorDouble dcov)
inline

◆ setBayesMean()

void CalcSimuTurningBands::setBayesMean ( const VectorDouble dmean)
inline

◆ setFlagBayes()

void CalcSimuTurningBands::setFlagBayes ( bool  flag_bayes)
inline

◆ setFlagCheck()

void CalcSimuTurningBands::setFlagCheck ( bool  flag_check)
inline

◆ setFlagDgm()

void CalcSimuTurningBands::setFlagDgm ( bool  flag_dgm)
inline

◆ setFlagGibbs()

void CalcSimuTurningBands::setFlagGibbs ( bool  flag_gibbs)
inline

◆ setFlagPgs()

void CalcSimuTurningBands::setFlagPgs ( bool  flag_pgs)
inline

◆ setIcase()

void CalcSimuTurningBands::setIcase ( int  icase)
inline

◆ setNBtuba()

void CalcSimuTurningBands::setNBtuba ( int  nbtuba)
inline

◆ setNbtuba()

void CalcSimuTurningBands::setNbtuba ( int  nbtuba)
inline

◆ simulate()

int CalcSimuTurningBands::simulate ( Db dbin,
Db dbout,
Model model,
ANeigh neigh,
int  icase,
int  flag_bayes = false,
const VectorDouble dmean = VectorDouble(),
const VectorDouble dcov = VectorDouble(),
bool  flag_pgs = false,
bool  flag_gibbs = false,
bool  flag_dgm = false 
)

Perform the Simulation Process using the Turning Bands Method

Returns
Error return code
Parameters
[in]dbinInput Db structure
[in]dboutOutput Db structure
[in]modelModel structure
[in]neighANeigh structure
[in]icaseCase for PGS or -1
[in]flag_bayes1 if the Bayes option is switched ON
[in]dmeanArray giving the prior means for the drift terms
[in]dcovArray containing the prior covariance matrix for the drift terms
[in]flag_pgs1 if called from PGS
[in]flag_gibbs1 if called from Gibbs
[in]flag_dgm1 if the Discrete Gaussian Model is used

◆ simulatePotential()

int CalcSimuTurningBands::simulatePotential ( Db dbiso,
Db dbgrd,
Db dbtgt,
Db dbout,
Model model,
double  delta 
)

Perform the (non-conditional) Simulation(s) using the Turning Bands Method

Returns
Error return code
Parameters
[in]dbisoIsovalues Db structure
[in]dbgrdGradient Db structure
[in]dbtgtTangent Db structure
[in]dboutOutput Db structure
[in]modelModel structure
[in]deltaValue of the increment

Member Data Documentation

◆ _bayesCov

VectorDouble CalcSimuTurningBands::_bayesCov
private

◆ _bayesMean

VectorDouble CalcSimuTurningBands::_bayesMean
private

◆ _codirs

std::vector<TurningDirection> CalcSimuTurningBands::_codirs
private

◆ _field

double CalcSimuTurningBands::_field
private

◆ _flagBayes

bool CalcSimuTurningBands::_flagBayes
private

◆ _flagCheck

bool CalcSimuTurningBands::_flagCheck
private

◆ _flagDGM

bool CalcSimuTurningBands::_flagDGM
private

◆ _flagGibbs

bool CalcSimuTurningBands::_flagGibbs
private

◆ _flagPGS

bool CalcSimuTurningBands::_flagPGS
private

◆ _iattOut

int CalcSimuTurningBands::_iattOut
private

◆ _icase

int CalcSimuTurningBands::_icase
private

◆ _nameCoord

VectorString CalcSimuTurningBands::_nameCoord
private

◆ _nbtuba

int CalcSimuTurningBands::_nbtuba
private

◆ _npointSimulated

int CalcSimuTurningBands::_npointSimulated
private

◆ _seedBands

VectorInt CalcSimuTurningBands::_seedBands
private

◆ _theta

double CalcSimuTurningBands::_theta
private

The documentation for this class was generated from the following files: