Geophysical Inversion and Modelling Library  v1.4.6
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 (SIndex marker, const Mesh &mesh, SIndex cellMarker, RegionManager *parent)
 Region (const Region &region)
Regionoperator= (const Region &region)
void setMarker (SIndex marker)
SIndex marker () const
void resize (const Mesh &mesh, SIndex cellMarker)
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
bool isInParaDomain () 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 setConstraintWeights (double bc)
void setConstraintWeights (const RVector &cw)
const RVectorconstraintWeights ()
void fillConstraintWeights (RVector &vec, Index constraintStart)
void _createConstraintWeights ()
void setZWeight (double zw)
double zWeight () const
void setFixValue (double val)
double fixValue () const
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< Boundary * > & boundaries () const
const std::vector< Cell * > & cells () const
std::vector< Cell * > & cells ()
void countParameter (Index start)
bool isPermuted () const
void permuteParameterMarker (const IndexArray &p)
const IndexArrayparaIds () const
void setStartModel (const RVector &start)
void setStartModel (double start)
Trans< RVector > * transModel ()
void setLowerBound (double lb)
void setUpperBound (double ub)
void setParameters (double start, double lb, double ub, std::string transString="")
void setModelTransStr_ (const std::string &val)
void setModelControlStr_ (const std::string &val)
void setStartModelStr_ (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_
std::vector< Cell * > cells_
std::vector< Boundary * > bounds_
bool isBackground_
bool isSingle_
bool isPermuted_
bool _isInParaDomain
IndexArray paraIDs_
Index parameterCount_
Index startParameter_
Index endParameter_
Index constraintType_
RVector startModel_
double modelControl_
RVector constraintWeights_
double zWeight_
double fixValue_
double mcDefault_
double startDefault_
double lowerBound_
double upperBound_
Trans< RVector > * tM_
bool ownsTrans_
std::string transString_

Member Function Documentation

◆ _createConstraintWeights()

void GIMLI::Region::_createConstraintWeights ( )

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


rather linear for bigger angles

References GIMLI::Boundary::norm(), and GIMLI::Vector< ValueType >::resize().

◆ boundaries()

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

Returns read_only acccess to the boundaries of this region

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

◆ 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

◆ constraintType()

Index GIMLI::Region::constraintType ( ) const

Return constraint type for this region.

◆ constraintWeights()

const RVector & GIMLI::Region::constraintWeights ( )

Return constraint weights as RVector (default RVector(constraintCount, 1.0)

◆ endParameter()

Index GIMLI::Region::endParameter ( ) const

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.

References GIMLI::Boundary::leftCell().

◆ fillConstraintWeights()

void GIMLI::Region::fillConstraintWeights ( RVector vec,
Index  constraintStart 

Fill global constraints weight vector started at constraintStart.

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

◆ isBackground()

bool GIMLI::Region::isBackground ( ) const

Return true if this region is a parameter region

Referenced by GIMLI::RegionManager::fillConstraints(), and GIMLI::RegionManager::setInterRegionConstraint().

◆ isInParaDomain()

bool GIMLI::Region::isInParaDomain ( ) const

Return true if the cells of this region are part of the primary paradomain.

◆ isPermuted()

bool GIMLI::Region::isPermuted ( ) const

Are the parameter indecies are ascending or permuted.

◆ isSingle()

bool GIMLI::Region::isSingle ( ) const

Return true if this region is a single parameter region

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

◆ markBackground()

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

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

◆ marker()

SIndex GIMLI::Region::marker ( ) const

Return the region marker id.

◆ markSingle()

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

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

◆ paraIds()

const IndexArray& GIMLI::Region::paraIds ( ) const

Return all parameter indices of this region.

◆ parameterCount()

Index GIMLI::Region::parameterCount ( ) const

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

◆ permuteParameterMarker()

void GIMLI::Region::permuteParameterMarker ( const IndexArray p)

Permute parameter indecies.

◆ resize() [1/2]

void GIMLI::Region::resize ( const Mesh mesh,
SIndex  cellMarker 

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.

◆ setConstraintType()

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

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

◆ setConstraintWeights() [1/2]

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

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

◆ setConstraintWeights() [2/2]

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

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

◆ 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)

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

◆ 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.

◆ setStartModel() [2/2]

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

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

◆ setUpperBound()

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

set lower parameter bound for region

◆ setZWeight()

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

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

◆ startParameter()

Index GIMLI::Region::startParameter ( ) const

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 ( )

DEPRECATED use setStartModel ‍/ void setStartVector(const RVector & start); /! DEPRECATED use setStartModel *‍/ void setStartValue(double start){ DEPRECATED setStartModel(start);}

void setModelControl(double val); void setModelControl(const RVector & vec);

inline double modelControl() { return modelControl_; }

void setTransModel(Trans< RVector > & tM);

/*! 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

Return Region-Wide horizontal(z)-weighting parameter