Geophysical Inversion and Modelling Library
v1.5.2-5-g042d7f36
|
Inherited by GIMLI::DC1dModelling, GIMLI::DCMultiElectrodeModelling, GIMLI::FDEM1dModelling, GIMLI::GravimetryModelling, GIMLI::HarmonicModelling, GIMLI::LinearModelling, GIMLI::MRSModelling, GIMLI::MT1dModelling, GIMLI::PolynomialModelling, and GIMLI::TravelTimeDijkstraModelling.
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) |
DataContainer & | data () const |
virtual RVector | createDefaultStartModel () |
virtual RVector | startModel () |
virtual void | setStartModel (const RVector &startModel) |
void | setMesh (const Mesh &mesh, bool ignoreRegionManager=false) |
Mesh * | mesh () |
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 () |
MatrixBase * | jacobian () |
MatrixBase * | jacobian () const |
virtual RMatrix & | jacobianRef () const |
virtual RMatrix & | jacobianRef () |
virtual void | clearJacobian () |
RVector | createMappedModel (const RVector &model, double background=-9e99) const |
void | setRegionManager (RegionManager *reg) |
const RegionManager & | regionManager () const |
RegionManager & | regionManager () |
RegionManager & | regionManagerRef () |
bool | verbose () |
Region * | region (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 | |
Mesh * | mesh_ |
DataContainer * | dataContainer_ |
MatrixBase * | jacobian_ |
bool | ownJacobian_ |
MatrixBase * | constraints_ |
bool | ownConstraints_ |
RMatrix | solutions_ |
RVector | startModel_ |
bool | verbose_ |
bool | regionManagerInUse_ |
bool | ownRegionManager_ |
Index | nThreads_ |
Index | nThreadsJacobian_ |
General modelling interface class.
|
inlinevirtual |
Clear Jacobian matrix.
|
inlinevirtual |
Interface to define custom start model generators.
Reimplemented in GIMLI::TTModellingWithOffset, GIMLI::TravelTimeDijkstraModelling, GIMLI::LinearModelling, GIMLI::GravimetryModelling, GIMLI::DC1dRhoModelling, GIMLI::DC1dModelling, and GIMLI::DCMultiElectrodeModelling.
|
virtual |
Create and fill the Jacobian matrix with a given model vector.
Reimplemented in GIMLI::TTModellingWithOffset, GIMLI::TravelTimeDijkstraModelling, GIMLI::GravimetryModelling, GIMLI::LinearModelling, GIMLI::MRS1dBlockModelling, GIMLI::MRSModelling, GIMLI::HarmonicModelling, and GIMLI::DCMultiElectrodeModelling.
References GIMLI::Matrix< ValueType >::resize(), and GIMLI::Matrix< ValueType >::rows().
Referenced by GIMLI::RInversion::checkJacobian(), and GIMLI::MRS1dBlockModelling::createJacobian().
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).
References GIMLI::Stopwatch::duration(), GIMLI::Matrix< ValueType >::resize(), GIMLI::Matrix< ValueType >::rows(), and GIMLI::Matrix< ValueType >::setCol().
|
virtual |
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.
References GIMLI::Stopwatch::duration(), GIMLI::Matrix< ValueType >::resize(), and GIMLI::Matrix< ValueType >::rows().
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().
RVector GIMLI::ModellingBase::createStartVector | ( | ) |
DEPRECATED use createStartModel
DataContainer & GIMLI::ModellingBase::data | ( | ) | const |
Return the associated data container.
Referenced by GIMLI::DC1dModelling::DC1dModelling().
void GIMLI::ModellingBase::deleteMesh | ( | ) |
Delete the actual mesh.
|
virtual |
Here you should initialize your Jacobian matrix. Default is RMatrix()
Reimplemented in GIMLI::TTModellingWithOffset, GIMLI::TravelTimeDijkstraModelling, and GIMLI::GravimetryModelling.
|
inline |
Return the pointer to the Jacobian matrix associated with this forward operator.
Referenced by GIMLI::RInversion::checkJacobian(), GIMLI::HarmonicModelling::createJacobian(), GIMLI::MRSModelling::createJacobian(), GIMLI::TTModellingWithOffset::createJacobian(), GIMLI::RInversion::oneStep(), GIMLI::RInversion::optLambda(), and GIMLI::RInversion::run().
|
inline |
Return the pointer to the Jacobian matrix associated with this forward operator.
|
inlinevirtual |
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).
|
inline |
Return number of threads used for Jacobian generation.
Region * GIMLI::ModellingBase::region | ( | int | marker | ) |
Syntactic sugar for this->regionManager().region(marker).
|
inlinevirtual |
Read only response function for multi threading purposes. Index i is use thread counter.
void GIMLI::ModellingBase::setData | ( | DataContainer & | data | ) |
Change the associated data container
Referenced by GIMLI::DC1dModelling::DC1dModelling().
|
virtual |
Set external Jacobian matrix
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)
References GIMLI::Stopwatch::duration().
Referenced by GIMLI::DCSRMultiElectrodeModelling::checkPrimpotentials_(), GIMLI::DC1dModelling::DC1dModelling(), and GIMLI::DC1dModellingC::DC1dModellingC().
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.
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.
References GIMLI::setThreadCount().
void GIMLI::ModellingBase::setVerbose | ( | bool | verbose | ) |
Set verbose state.
|
virtual |
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.
Referenced by GIMLI::RInversion::run().
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.
References GIMLI::getEnvironment(), and GIMLI::numberOfCPU().
Referenced by GIMLI::TravelTimeDijkstraModelling::response().
|
inline |
Get verbose state.
Referenced by GIMLI::TravelTimeDijkstraModelling::response().