Geophysical Inversion and Modelling Library  v1.3.1-2-g7599abf9
GIMLI::ModellingBase Class Reference

Inherited by GIMLI::DC1dModelling, GIMLI::DCMultiElectrodeModelling, GIMLI::FDEM1dModelling, GIMLI::GravimetryModelling, GIMLI::HarmonicModelling, GIMLI::LinearModelling, GIMLI::MRSModelling, GIMLI::MT1dModelling, GIMLI::PolynomialModelling, and GIMLI::TravelTimeDijkstraModelling.

+ Collaboration diagram for GIMLI::ModellingBase:

Public Member Functions

 ModellingBase (bool verbose=false)
 ModellingBase (DataContainer &dataContainer, bool verbose=false)
 ModellingBase (const Mesh &mesh, bool verbose=false)
 ModellingBase (const Mesh &mesh, DataContainer &dataContainer, bool verbose=false)
void setVerbose (bool verbose)
bool verbose () const
virtual RVector response (const RVector &model)
virtual RVector response_mt (const RVector &model, Index i=0) const
RVector operator() (const RVector &model)
void setData (DataContainer &data)
DataContainerdata () const
virtual RVector createDefaultStartModel ()
virtual RVector startModel ()
virtual void setStartModel (const RVector &startModel)
void setMesh (const Mesh &mesh, bool ignoreRegionManager=false)
Meshmesh ()
void createRefinedForwardMesh (bool refine=true, bool pRefine=false)
void deleteMesh ()
virtual void setJacobian (MatrixBase *J)
virtual void createJacobian (const RVector &model)
virtual void createJacobian (const RVector &model, const RVector &resp)
virtual void createJacobian_mt (const RVector &model, const RVector &resp)
virtual void initJacobian ()
MatrixBasejacobian ()
MatrixBasejacobian () const
virtual RMatrixjacobianRef () const
virtual RMatrixjacobianRef ()
virtual void clearJacobian ()
RVector createMappedModel (const RVector &model, double background=-9e99) const
void setRegionManager (RegionManager *reg)
const RegionManagerregionManager () const
RegionManagerregionManager ()
RegionManagerregionManagerRef ()
bool verbose ()
Regionregion (int marker)
RVector createStartModel ()
RVector createStartVector ()
void initRegionManager ()
void setThreadCount (Index nThreads)
Index threadCount ()
void setMultiThreadJacobian (Index nThreads)
Index multiThreadJacobian () const

Protected Member Functions

virtual void init_ ()
virtual void deleteMeshDependency_ ()
virtual void updateMeshDependency_ ()
virtual void updateDataDependency_ ()
void setMesh_ (const Mesh &mesh, bool update=true)

Protected Attributes

bool ownJacobian_
bool ownConstraints_
RMatrix solutions_
RVector startModel_
bool verbose_
bool regionManagerInUse_
bool ownRegionManager_
Index nThreads_
Index nThreadsJacobian_

Detailed Description

General modelling interface class.

Member Function Documentation

◆ clearJacobian()

virtual void GIMLI::ModellingBase::clearJacobian ( )

Clear Jacobian matrix.

◆ createDefaultStartModel()

virtual RVector GIMLI::ModellingBase::createDefaultStartModel ( )

◆ createJacobian() [1/2]

void GIMLI::ModellingBase::createJacobian ( const RVector model)

◆ createJacobian() [2/2]

void GIMLI::ModellingBase::createJacobian ( const RVector model,
const RVector resp 

Create and fill the Jacobian matrix with a given model vector and a prior calculated response for this model. The Jacobian matrix need to by initialized and resized. If unsure take createJacobian(const RVector & model).

◆ createJacobian_mt()

void GIMLI::ModellingBase::createJacobian_mt ( const RVector model,
const RVector resp 

Create and fill the Jacobian matrix with a given model vector. Multi-threaded version. Will be called if setMultiThreadJacobian has been set > 1. For thread safe reasons response_mt, a read only variant of the response method need to be implemented.

◆ createMappedModel()

RVector GIMLI::ModellingBase::createMappedModel ( const RVector model,
double  background = -9e99 
) const

Set and get constraint matrix

Clear Constraints matrix *‍/ virtual void setConstraints(MatrixBase * C);

virtual void clearConstraints();

virtual void initConstraints();

virtual void createConstraints();

virtual MatrixBase * constraints();

virtual MatrixBase * constraints() const;

virtual RSparseMapMatrix & constraintsRef() const;

virtual RSparseMapMatrix & constraintsRef();

const RMatrix & solution() const { return solutions_; }

void mapModel(const RVector & model, double background=0);

/*! Read only extrapolation of model values given per cell marker to values given per cell. Exterior values will be set to background or prolongated for background != -9e99.

References GIMLI::unique().

Referenced by GIMLI::TravelTimeDijkstraModelling::response().

◆ createStartVector()

RVector GIMLI::ModellingBase::createStartVector ( )

DEPRECATED use createStartModel

References GIMLI::MatrixBase::cols().

◆ data()

DataContainer & GIMLI::ModellingBase::data ( ) const

Return the associated data container.

◆ deleteMesh()

void GIMLI::ModellingBase::deleteMesh ( )

Delete the actual mesh.

◆ initJacobian()

void GIMLI::ModellingBase::initJacobian ( )

Here you should initialize your Jacobian matrix. Default is RMatrix()

Reimplemented in GIMLI::TTModellingWithOffset, GIMLI::TravelTimeDijkstraModelling, and GIMLI::GravimetryModelling.

◆ jacobian() [1/2]

MatrixBase* GIMLI::ModellingBase::jacobian ( )

Return the pointer to the Jacobian matrix associated with this forward operator.

Referenced by GIMLI::TTModellingWithOffset::createJacobian(), and GIMLI::HarmonicModelling::response().

◆ jacobian() [2/2]

MatrixBase* GIMLI::ModellingBase::jacobian ( ) const

Return the pointer to the Jacobian matrix associated with this forward operator.

◆ jacobianRef()

virtual RMatrix& GIMLI::ModellingBase::jacobianRef ( ) const

Return the Jacobian Matrix (read only) associated with this forward operator. Throws an exception if the jacobian is not initialized. Cannot yet be overloaded by pyplusplus (return virtual reference)(Warning 1049).

◆ multiThreadJacobian()

Index GIMLI::ModellingBase::multiThreadJacobian ( ) const

Return number of threads used for Jacobian generation.

◆ region()

Region * GIMLI::ModellingBase::region ( int  marker)

Syntactic sugar for this->regionManager().region(marker).

◆ response_mt()

virtual RVector GIMLI::ModellingBase::response_mt ( const RVector model,
Index  i = 0 
) const

Read only response function for multi threading purposes. Index i is use thread counter.

◆ setData()

void GIMLI::ModellingBase::setData ( DataContainer data)

Change the associated data container

◆ setJacobian()

void GIMLI::ModellingBase::setJacobian ( MatrixBase J)

Set external Jacobian matrix

◆ setMesh()

void GIMLI::ModellingBase::setMesh ( const Mesh mesh,
bool  ignoreRegionManager = false 

Set new mesh to the forward operator, optionally hold region parameter for the new mesh (i.e. for roll a long)

◆ setMultiThreadJacobian()

void GIMLI::ModellingBase::setMultiThreadJacobian ( Index  nThreads)

Set number of threads used for brute force Jacobian generation. 1 is default. If nThreads is greater than 1 you need to implement response_mt with a read only response function. Maybe its worth set the single setThreadCount to 1 than, that you don't find yourself in a threading overkill.

References GIMLI::schedGetCPU().

◆ setThreadCount()

void GIMLI::ModellingBase::setThreadCount ( Index  nThreads)

Set the maximum number of allowed threads for MT calculation. Have to be greater than 0. Will also set ENV(OPENBLAS_NUM_THREADS) .. if used.

◆ setVerbose()

void GIMLI::ModellingBase::setVerbose ( bool  verbose)

Set verbose state.

References GIMLI::numberOfCPU().

◆ startModel()

RVector GIMLI::ModellingBase::startModel ( )

Return the start model. If there is no model defined createDefaultStartModel is called which can be overloaded by child classes. !

Reimplemented in GIMLI::PolynomialModelling, and GIMLI::HarmonicModelling.

◆ threadCount()

Index GIMLI::ModellingBase::threadCount ( )

Return the maximum number of allowed threads for MT calculation based on local setting. GIMLI_NUM_THREADS will be used first. Give some verbose output.

Referenced by GIMLI::TravelTimeDijkstraModelling::response().

◆ verbose()

bool GIMLI::ModellingBase::verbose ( ) const

Get verbose state.

Referenced by GIMLI::TravelTimeDijkstraModelling::response().