Geophysical Inversion and Modeling Library  v1.0.11-19-gfad5635f
GIMLI::Region Class Reference
+ Collaboration diagram for GIMLI::Region:

Public Member Functions

 Region (SIndex marker, RegionManager *parent, bool single=false)
 
 Region (SIndex marker, const Mesh &mesh, RegionManager *parent)
 
 Region (const Region &region)
 
Regionoperator= (const Region &region)
 
void setMarker (SIndex marker)
 
SIndex marker () const
 
const std::vector< Boundary *> & boundaries () const
 
void resize (const Mesh &mesh)
 
void resize (const std::vector< Cell * > &cells)
 
void markBackground (bool background)
 
void setBackground (bool background=true)
 
bool isBackground () const
 
void markSingle (bool issingle)
 
void setSingle (bool background=true)
 
bool isSingle () const
 
Index parameterCount () const
 
Index startParameter () const
 
Index endParameter () const
 
void setConstraintType (Index type)
 
Index constraintType () const
 
Index constraintCount () const
 
void fillConstraints (RSparseMapMatrix &C, Index startConstraintsID)
 
void setConstraintsWeight (double bc)
 
void setConstraintsWeight (const RVector &cw)
 
const RVectorconstraintsWeight () const
 
void fillConstraintsWeight (RVector &vec, Index constraintStart)
 
void setZWeight (double zw)
 
double zWeight () const
 
void setZPower (double zp)
 
double zPower () const
 
void setFixValue (double val)
 
double fixValue () const
 
void fillConstraintsWeightWithFlatWeight ()
 
void fillBoundaryNorm (std::vector< RVector3 > &vnorm, Index boundCount)
 
void fillBoundarySize (RVector &vec, Index boundStart)
 
void fillStartModel (RVector &vec)
 
void fillModelControl (RVector &vec)
 
const std::vector< Cell *> & cells () const
 
std::vector< Cell *> & cells ()
 
void countParameter (Index start)
 
void setStartModel (const RVector &start)
 
void setStartModel (double start)
 
void setStartValue (double start)
 
void setModelControl (double val)
 
void setModelControl (const RVector &vec)
 
void setModelControl (PosFunctor *mcF)
 
const RVectormodelControl () const
 
RVectormodelControl ()
 
void setModelTransformation (const Trans< RVector > &tM)
 
void setTransModel (Trans< RVector > &tM)
 
Trans< RVector > * transModel ()
 
void setLowerBound (double lb)
 
void setUpperBound (double ub)
 
void setParameters (double start, double lb, double ub, std::string transString="")
 
void createConstraintsWeight_ ()
 
void setModelTransStr_ (const std::string &val)
 
void setModelControlStr_ (const std::string &val)
 
void setStartModelStr_ (const std::string &val)
 
void setZPowerStr_ (const std::string &val)
 
void setZWeightStr_ (const std::string &val)
 
void setFixValueStr_ (const std::string &val)
 
void setConstraintTypeStr_ (const std::string &val)
 
void setLowerBoundStr_ (const std::string &val)
 
void setUpperBoundStr_ (const std::string &val)
 
void setSingleStr_ (const std::string &val)
 
void setBackgroundStr_ (const std::string &val)
 

Protected Member Functions

void init_ ()
 
void copy_ (const Region &region)
 

Protected Attributes

SIndex marker_
 
RegionManagerparent_
 
std::vector< Cell *> cells_
 
std::vector< Boundary *> bounds_
 
bool isBackground_
 
bool isSingle_
 
Index parameterCount_
 
Index startParameter_
 
Index endParameter_
 
Index constraintType_
 
RVector startModel_
 
RVector modelControl_
 
RVector constraintsWeight_
 
double zPower_
 
double zWeight_
 
double fixValue_
 
double mcDefault_
 
double startDefault_
 
double lowerBound_
 
double upperBound_
 
Trans< RVector > * tM_
 
bool ownsTrans_
 
std::string transString_
 

Member Function Documentation

◆ boundaries()

const std::vector< Boundary * >& GIMLI::Region::boundaries ( ) const
inline

Returns read_only acccess to the boundaries of this region

◆ constraintCount()

Index GIMLI::Region::constraintCount ( ) const

Returns number of constraints defined for this region, For single region return 1,
for constraintstype == 0 return amount of parameter cells,
else return amount of inner boundaries

◆ constraintsWeight()

const RVector& GIMLI::Region::constraintsWeight ( ) const
inline

Return Read-only vector of given constraints weights as RVector (default RVector(constraintCount, 1.0)

◆ constraintType()

Index GIMLI::Region::constraintType ( ) const
inline

Return constraint type for this region.

◆ createConstraintsWeight_()

void GIMLI::Region::createConstraintsWeight_ ( )

Create Constraints weight values from constrains type and weighting.

◆ endParameter()

Index GIMLI::Region::endParameter ( ) const
inline

Return the last parameter id by means of a global count, defined in countParameter called from RegionManager

◆ fillConstraints()

void GIMLI::Region::fillConstraints ( RSparseMapMatrix C,
Index  startConstraintsID 
)

Fill given constraints matrix with local constraints. For single region (startConstraintsID, startParameter_) = 1,
for constraintstype == 0 fill (startConstraintsID + i, startParameter_ + i) = 1, i=1..constraintCount()
else fill (startConstraintsID + i, Boundary_i_leftNeightbourParameterID) = 1, (startConstraintsID + i, Boundary_i_rightNeightbourParameterID) = -1, i = 1..nBoundaries.

◆ fillConstraintsWeight()

void GIMLI::Region::fillConstraintsWeight ( RVector vec,
Index  constraintStart 
)

Fill global constraints weight vector started at constraintStart.

◆ fillConstraintsWeightWithFlatWeight()

void GIMLI::Region::fillConstraintsWeightWithFlatWeight ( )

Helper method that convert cWeight parameter into individual constraintsWeights depending on the associated boundary norm. At the moment only zWeight is considered.

z-component

zPower controls and zweight is minimum zweight

zweight controls and is power factor, includes

rather linear for bigger angles

References GIMLI::Vector< ValueType >::resize().

◆ isBackground()

bool GIMLI::Region::isBackground ( ) const
inline

Return true if this region is a parameter region

◆ isSingle()

bool GIMLI::Region::isSingle ( ) const
inline

Return true if this region is a single parameter region

◆ markBackground()

void GIMLI::Region::markBackground ( bool  background)
inline

Mark this region to be a background region, need RegionManger::recount

◆ marker()

SIndex GIMLI::Region::marker ( ) const
inline

Return the region marker id.

◆ markSingle()

void GIMLI::Region::markSingle ( bool  issingle)
inline

Mark this region to be a single parameter region, need RegionManger::recount

◆ parameterCount()

Index GIMLI::Region::parameterCount ( ) const
inline

Return number of parameters for this region, 1 on single region

Referenced by GIMLI::RegionManager::fillConstraints().

◆ resize() [1/2]

void GIMLI::Region::resize ( const Mesh mesh)

Set new parameter cells, i.e. update the related mesh and all sizes.

References GIMLI::Mesh::findCellByMarker(), and GIMLI::Boundary::leftCell().

Referenced by GIMLI::RegionManager::createRegion_(), and GIMLI::RegionManager::createSingleRegion_().

◆ resize() [2/2]

void GIMLI::Region::resize ( const std::vector< Cell * > &  cells)

Set new parameter cells, i.e. update the related mesh and all sizes. Only for single region.

◆ setBackground()

void GIMLI::Region::setBackground ( bool  background = true)

Set this region to be a background region. Forces the regionmanager to recount all regions.

◆ setConstraintsWeight() [1/2]

void GIMLI::Region::setConstraintsWeight ( double  bc)

Set region wide constant constraints weight, (default = 1). If this method is called background is forced to false.

◆ setConstraintsWeight() [2/2]

void GIMLI::Region::setConstraintsWeight ( const RVector cw)

Set region wide variable constraints weight from RVector cw. If this method is called background is forced to false.

References GIMLI::toStr().

◆ setConstraintType()

void GIMLI::Region::setConstraintType ( Index  type)

Set the constraint type for this region available(0, 1)

◆ setFixValue()

void GIMLI::Region::setFixValue ( double  val)

Set fixed value for background regions that will not part of any value prolongation.

◆ setLowerBound()

void GIMLI::Region::setLowerBound ( double  lb)

set lower parameter bound for region

◆ setMarker()

void GIMLI::Region::setMarker ( SIndex  marker)
inline

Set the region marker id

◆ setParameters()

void GIMLI::Region::setParameters ( double  start,
double  lb,
double  ub,
std::string  transString = "" 
)

set start and upper/lower bounds for region

References GIMLI::toStr().

◆ setSingle()

void GIMLI::Region::setSingle ( bool  background = true)

Set this region to be a single parameter region. Forces the regionmanager to recount all regions.

◆ setStartModel() [1/2]

void GIMLI::Region::setStartModel ( const RVector start)

Set the values of start for the start model of this region.

References GIMLI::toStr().

◆ setStartModel() [2/2]

void GIMLI::Region::setStartModel ( double  start)

Set the value of start into the start model vector for this region.

References GIMLI::toStr().

◆ setStartValue()

void GIMLI::Region::setStartValue ( double  start)
inline

DEPRECATED use setStartModel

DEPRECATED use setStartModel

◆ setUpperBound()

void GIMLI::Region::setUpperBound ( double  ub)

set lower parameter bound for region

◆ setZPower()

void GIMLI::Region::setZPower ( double  zp)
inline

Possible DEPRECATED ??

◆ setZWeight()

void GIMLI::Region::setZWeight ( double  zw)
inline

Set Region-Wide horizontal(z) weighting parameter for anisotropic smoothing
1 - isotrope, 0 – no vertical smoothing

◆ startParameter()

Index GIMLI::Region::startParameter ( ) const
inline

Return the first parameter id by means of a global count, defined in countParameter called from RegionManager

Referenced by GIMLI::RegionManager::fillConstraints().

◆ transModel()

Trans< RVector >* GIMLI::Region::transModel ( )
inline

Return a cumulative transform function based on transform functions for each region. Return NULL if no region is defined.

◆ zWeight()

double GIMLI::Region::zWeight ( ) const
inline

Return Region-Wide horizontal(z)-weighting parameter