UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Optimize1d Class Reference

#include <optimize1d.hpp>

Classes

struct  IntData
 
struct  OptType
 

Public Member Functions

 Optimize1d (IKP1dModel *mod, IKP1dData *data)
 
virtual ~Optimize1d ()
 
void inverseProblem (int IterNum)
 
void directProblem ()
 
void setAnizLim (double lim)
 
void setOptimType (int type)
 
void setDipArea (double min, double max)
 
void initData ()
 
IKP1dDatagetHodsData ()
 
IKP1dModelgetCurrentModel ()
 
double getCurDerVal ()
 
int getCurIterVal ()
 
void stopOptim ()
 
void set_dip_az (double dip, double az)
 

Static Public Member Functions

static void calcPolylineHodVels (IKP1dHod *hod, IKP1dModel *mod, IKP1dWaveType wt, double maxVelocity)
 

Protected Types

typedef double CMatrix [3][3]
 

Protected Member Functions

virtual void setProgressValue (int val)
 
void init_data ()
 
void remove_idata ()
 
double calc_f ()
 
double calc_derivatives ()
 
void trans_os (IKP1dDataLayer *lay, CMatrix &m)
 
void make_trans_matrix (double dip, double az, CMatrix &m1, CMatrix &m2)
 
void set_lr_ls (int n)
 
void q_step (int n, double *q0p, double *q1p, double alf, double k_lim)
 
void fix_slownes_vel_ranges (int n, double &q0)
 
void v2q ()
 
void q2v ()
 

Protected Attributes

struct Optimize1d::IntData iData
 
IKP1dModelm_mod
 
IKP1dDatam_data
 
double m_aniz_lim
 
int m_opt_type
 
float m_min_sin
 
bool m_optim_continue
 
double cur_der_val
 
int cur_iter_val
 
double m_min_sin_fi
 
bool m_compute_dip
 
double m_min_dip_val
 
double m_max_dip_val
 

Detailed Description

Optimization for 1D velocity model using several VSP hodographs. This object provides iterative inverse kinematic problem feature for refining velocity model parameters such as velocities and anizotropies of presure and shear waves.

Member Typedef Documentation

typedef double Optimize1d::CMatrix[3][3]
protected

Matrix for coordinates conversion

Constructor & Destructor Documentation

Optimize1d::Optimize1d ( IKP1dModel mod,
IKP1dData data 
)

Construct optimize object for provided velocity model and hodographs.

virtual Optimize1d::~Optimize1d ( )
virtual

Destructy object

Member Function Documentation

double Optimize1d::calc_derivatives ( )
protected

Calculate derivatives for provided velocity model and hodographs for current optimization type.

double Optimize1d::calc_f ( )
protected

Calculate derivative function for provided velocity model and hodographs

static void Optimize1d::calcPolylineHodVels ( IKP1dHod hod,
IKP1dModel mod,
IKP1dWaveType  wt,
double  maxVelocity 
)
static

Calculate layer velocities using polyline hodograph approximation. Maximal velocity value is provided.

void Optimize1d::directProblem ( )

Calculate model hodograph for provided velocity model with observation system from source hodograph

void Optimize1d::fix_slownes_vel_ranges ( int  n,
double &  q0 
)
protected

Fix slownes ranges from ranges of velocity of n-th layer of model

double Optimize1d::getCurDerVal ( )
inline

Return current derivation value

int Optimize1d::getCurIterVal ( )
inline

Return current iteration value

IKP1dModel* Optimize1d::getCurrentModel ( )
inline

Get current velocity model

IKP1dData* Optimize1d::getHodsData ( )
inline

Get current hodographs data

void Optimize1d::init_data ( )
protected

Initialize source data

void Optimize1d::initData ( )

Initialize internal data for calculations

void Optimize1d::inverseProblem ( int  IterNum)

Solve inverse kinematic problem for current velocity model with array of source hodographs. Number of iterations is provided.

void Optimize1d::make_trans_matrix ( double  dip,
double  az,
CMatrix m1,
CMatrix m2 
)
protected

Prepare conversion matrix from local to global coordinate system and inverse one

void Optimize1d::q2v ( )
protected

Convert slowness to velocity

void Optimize1d::q_step ( int  n,
double *  q0p,
double *  q1p,
double  alf,
double  k_lim 
)
protected

Make a step in slowness space

void Optimize1d::remove_idata ( )
protected

Remove internal data

void Optimize1d::set_dip_az ( double  dip,
double  az 
)

Set provided dip and azimuth for internal ikp data

void Optimize1d::set_lr_ls ( int  n)
protected

Calculate horizontal distancies for receivers and observers with current velocity model

void Optimize1d::setAnizLim ( double  lim)

Set anizotropy coefficients limits in percentage. Lim will be zero if negative value is provided.

void Optimize1d::setDipArea ( double  min,
double  max 
)

Set dip area in degrees (-90 <= dip <= 90)

void Optimize1d::setOptimType ( int  type)

Set type of optimization, see OptType mask

virtual void Optimize1d::setProgressValue ( int  val)
inlineprotectedvirtual

Set value for progress bar if it is defined in any derived class

Nothing to do

void Optimize1d::stopOptim ( )
inline

Terminate current optimization process using continue optimization flag

void Optimize1d::trans_os ( IKP1dDataLayer lay,
CMatrix m 
)
protected

Transform observation system coordinate

void Optimize1d::v2q ( )
protected

Convert velocity to slowless

Member Data Documentation

double Optimize1d::cur_der_val
protected

Current derivation value

int Optimize1d::cur_iter_val
protected

Current number of iteration

double Optimize1d::m_aniz_lim
protected

Anizotropy coefficients limit in percentage

bool Optimize1d::m_compute_dip
protected

Compute or not model dip, false by default

IKP1dData* Optimize1d::m_data
protected

Hodographs data

double Optimize1d::m_min_dip_val
protected

Minimal and maximal dip values in rad (-PI/2 <= dip <= PI/2)

float Optimize1d::m_min_sin
protected

Monimal sin value for angle when transformation of observation system is provided

double Optimize1d::m_min_sin_fi
protected

Minimal sin of angle when observation system should be converted

IKP1dModel* Optimize1d::m_mod
protected

Velocity model

int Optimize1d::m_opt_type
protected

Type of optimization

bool Optimize1d::m_optim_continue
protected

True if optimization process may continue


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