simpeg.potential_fields.base.BasePFSimulation#
- class simpeg.potential_fields.base.BasePFSimulation(mesh, active_cells=None, store_sensitivities='ram', n_processes=1, sensitivity_dtype=<class 'numpy.float32'>, engine='geoana', numba_parallel=True, ind_active=None, **kwargs)[source]#
Bases:
LinearSimulation
Base class for potential field simulations that use integral formulations.
For integral formulations, the forward simulation for a set of voxel cells can be defined as a linear operation of the form:
\[\mathbf{d} = \mathbf{Am}\]where \(\mathbf{d}\) are the data, \(\mathbf{m}\) are the model paramters and \(\mathbf{A}\) is a linear operator defining the sensitivities. The primary difference between child simulation classes is the kernel function used to create the rows of \(\mathbf{A}\).
- Parameters:
- mesh
discretize.TensorMesh
ordiscretize.TreeMesh
A 3D tensor or tree mesh.
- active_cells
np.ndarray
of
int
or bool Indices array denoting the active topography cells.
- store_sensitivities{‘ram’, ‘disk’, ‘forward_only’}
Options for storing sensitivities. There are 3 options
‘ram’: sensitivities are stored in the computer’s RAM
‘disk’: sensitivities are written to a directory
‘forward_only’: you intend only do perform a forward simulation and sensitivities do not need to be stored
- n_processes
None
orint
,optional
The number of processes to use in the internal multiprocessing pool for forward modeling. The default value of 1 will not use multiprocessing. Any other setting will. None implies setting by the number of cpus. If engine is
"choclo"
, then this argument will be ignored.- engine{“geoana”, “choclo”},
optional
Choose which engine should be used to run the forward model.
- numba_parallelbool,
optional
If True, the simulation will run in parallel. If False, it will run in serial. If
engine
is not"choclo"
this argument will be ignored.- ind_active
np.ndarray
of
int
or bool Deprecated since version 0.23.0: Argument
ind_active
is deprecated in favor ofactive_cells
and will be removed in SimPEG v0.24.0.
- mesh
Attributes
The linear operator.
Active cells in the mesh.
A list of solver objects to clean when the model is updated
SimPEG
Counter
object to store iterations and run-times.HasModel.deleteTheseOnModelUpdate has been deprecated.
Engine that will be used to run the simulation.
active_cells.ind_active has been deprecated.
The model for a linear problem physical property model.
Mesh for the integral potential field simulations.
The inversion model.
Derivative of The model for a linear problem wrt the model.
Mapping of the inversion model to The model for a linear problem.
Number of processes to use for forward modeling.
True if a model is necessary
Run simulation in parallel or single-threaded when using Numba.
dtype of the sensitivity matrix.
Path to directory where sensitivity file is stored.
Options for storing sensitivities.
The survey for the simulation.
Verbose progress printout.
Methods
Jtvec
(m, v[, f])Compute the Jacobian transpose times a vector for the model provided.
Jtvec_approx
(m, v[, f])Approximation of the Jacobian transpose times a vector for the model provided.
Jvec
(m, v[, f])Compute the Jacobian times a vector for the model provided.
Jvec_approx
(m, v[, f])Approximation of the Jacobian times a vector for the model provided.
dpred
([m, f])Predicted data for the model provided.
fields
(m)Return the computed geophysical fields for the model provided.
getJ
(m[, f])Returns the full Jacobian.
Return linear operator.
make_synthetic_data
(m[, relative_error, ...])Make synthetic data for the model and Gaussian noise provided.
residual
(m, dobs[, f])The data residual.
Notes
If using multiprocessing by setting n_processes to a value other than 1, you must be aware of the method your operating system uses to spawn the subprocesses. On Windows the default method starts new processes that all import the main script. Therefor you must protect the calls to this class by testing if you are in the main process with:
>>> from simpeg.potential_fields import gravity >>> if __name__ == '__main__': ... # Do your processing here ... sim = gravity.Simulation3DIntegral(n_processes=4, ...) ... sim.dpred(m)
This usually does not affect jupyter notebook environments.
Galleries and Tutorials using simpeg.potential_fields.base.BasePFSimulation
#
PF: Gravity: Tiled Inversion Linear
Magnetic inversion on a TreeMesh with remanence
Magnetic inversion on a TreeMesh
Magnetic Amplitude inversion on a TreeMesh
PF: Gravity: Laguna del Maule Bouguer Gravity
Forward Simulation of Gravity Anomaly Data on a Tensor Mesh
Forward Simulation of Gradiometry Data on a Tree Mesh
Least-Squares Inversion of Gravity Anomaly Data
Sparse Norm Inversion of Gravity Anomaly Data
Compare weighting strategy with Inversion of surface Gravity Anomaly Data
Forward Simulation of Total Magnetic Intensity Data
Forward Simulation of Gradiometry Data for Magnetic Vector Models
Sparse Norm Inversion for Total Magnetic Intensity Data on a Tensor Mesh
Joint PGI of Gravity + Magnetic on an Octree mesh using full petrophysical information
Joint PGI of Gravity + Magnetic on an Octree mesh without petrophysical information
Cross-gradient Joint Inversion of Gravity and Magnetic Anomaly Data