Ice Sheet System Model  4.18
Code documentation
Public Member Functions | Data Fields
GaussianVariogram Class Reference

#include <GaussianVariogram.h>

Inheritance diagram for GaussianVariogram:
Variogram Object

Public Member Functions

 GaussianVariogram ()
 
 GaussianVariogram (Options *options)
 
 ~GaussianVariogram ()
 
Objectcopy ()
 
void DeepEcho ()
 
void Echo ()
 
int Id ()
 
void Marshall (char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
 
int ObjectEnum ()
 
double Covariance (double deltax, double deltay)
 
double SemiVariogram (double deltax, double deltay)
 
- Public Member Functions inherited from Variogram
virtual ~Variogram ()
 
- Public Member Functions inherited from Object
virtual ~Object ()
 

Data Fields

double nugget
 
double sill
 
double range
 

Detailed Description

Definition at line 12 of file GaussianVariogram.h.

Constructor & Destructor Documentation

◆ GaussianVariogram() [1/2]

GaussianVariogram::GaussianVariogram ( )

Definition at line 15 of file GaussianVariogram.cpp.

15  {/*{{{*/
16  this->nugget = 0.2;
17  this->sill = 1;
18  this->range = SQRT3;
19  return;
20 }

◆ GaussianVariogram() [2/2]

GaussianVariogram::GaussianVariogram ( Options options)

Definition at line 22 of file GaussianVariogram.cpp.

22  {/*{{{*/
23 
24  /*Defaults*/
25  this->nugget = 0.2;
26  this->sill = 1;
27  this->range = SQRT3;
28 
29  /*Overwrite from options*/
30  if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
31  if(options->GetOption("sill")) options->Get(&this->sill,"sill");
32  if(options->GetOption("range")) options->Get(&this->range,"range");
33 
34  /*Checks*/
35  if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
36 }

◆ ~GaussianVariogram()

GaussianVariogram::~GaussianVariogram ( )

Definition at line 38 of file GaussianVariogram.cpp.

38  {/*{{{*/
39  return;
40 }

Member Function Documentation

◆ copy()

Object * GaussianVariogram::copy ( void  )
virtual

Implements Object.

Definition at line 44 of file GaussianVariogram.cpp.

44  {/*{{{*/
45  return new GaussianVariogram(*this);
46 }

◆ DeepEcho()

void GaussianVariogram::DeepEcho ( void  )
inlinevirtual

Implements Object.

Definition at line 26 of file GaussianVariogram.h.

26 {_error_("Not implemented yet");};

◆ Echo()

void GaussianVariogram::Echo ( void  )
virtual

Implements Object.

Definition at line 48 of file GaussianVariogram.cpp.

48  {/*{{{*/
49  _printf_("GaussianVariogram\n");
50  _printf_(" nugget: " << this->nugget << "\n");
51  _printf_(" sill : " << this->sill << "\n");
52  _printf_(" range : " << this->range << "\n");
53 }

◆ Id()

int GaussianVariogram::Id ( void  )
inlinevirtual

Implements Object.

Definition at line 28 of file GaussianVariogram.h.

28 {_error_("Not implemented yet");};

◆ Marshall()

void GaussianVariogram::Marshall ( char **  pmarshalled_data,
int *  pmarshalled_data_size,
int  marshall_direction 
)
inlinevirtual

Implements Object.

Definition at line 29 of file GaussianVariogram.h.

29 { _error_("not implemented yet!"); };

◆ ObjectEnum()

int GaussianVariogram::ObjectEnum ( void  )
inlinevirtual

Implements Object.

Definition at line 30 of file GaussianVariogram.h.

30 {_error_("Not implemented yet");};

◆ Covariance()

double GaussianVariogram::Covariance ( double  deltax,
double  deltay 
)
virtual

Implements Variogram.

Definition at line 57 of file GaussianVariogram.cpp.

57  {/*{{{*/
58  /*The covariance can be deduced from the variogram from the following
59  * relationship:
60  * 2 gamma = C(x,x) + C(y,y) -2 C(x,y)
61  * so
62  * C(h) = sill - gamma */
63  double h2,a,cova;
64 
65  /*Calculate length square*/
66  h2=deltax*deltax + deltay*deltay;
67 
68  /*If h is too small, return sill*/
69  if(h2<0.0000001) return sill;
70 
71  /*compute covariance*/
72  a = 1./3.;
73  cova = (sill-nugget)*exp(-h2/(a*range*range));
74 
75  return cova;
76 }

◆ SemiVariogram()

double GaussianVariogram::SemiVariogram ( double  deltax,
double  deltay 
)
virtual

Implements Variogram.

Definition at line 78 of file GaussianVariogram.cpp.

78  {/*{{{*/
79  /*http://en.wikipedia.org/wiki/Variogram*/
80  double h2,a,gamma;
81 
82  /*Calculate length square*/
83  h2=deltax*deltax + deltay*deltay;
84 
85  /*return semi-variogram*/
86  a = 1./3.;
87  gamma = (sill-nugget)*(1.-exp(-h2/(a*range*range))) + nugget;
88 
89  //if(h2>1000*1000) _printf_("gamma = " << gamma << " h= " << sqrt(h2) << "\n");
90  _printf_("h = " << sqrt(h2) << " gamma = " << gamma << "\n");
91  return gamma;
92 }

Field Documentation

◆ nugget

double GaussianVariogram::nugget

Definition at line 15 of file GaussianVariogram.h.

◆ sill

double GaussianVariogram::sill

Definition at line 16 of file GaussianVariogram.h.

◆ range

double GaussianVariogram::range

Definition at line 17 of file GaussianVariogram.h.


The documentation for this class was generated from the following files:
_printf_
#define _printf_(StreamArgs)
Definition: Print.h:22
GaussianVariogram::sill
double sill
Definition: GaussianVariogram.h:16
Options::Get
void Get(OptionType *pvalue, const char *name)
Definition: Options.h:21
Options::GetOption
Option * GetOption(const char *name)
Definition: Options.cpp:67
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
GaussianVariogram::nugget
double nugget
Definition: GaussianVariogram.h:15
GaussianVariogram::GaussianVariogram
GaussianVariogram()
Definition: GaussianVariogram.cpp:15
SQRT3
#define SQRT3
Definition: constants.h:10
GaussianVariogram::range
double range
Definition: GaussianVariogram.h:17