Typedefs | |
typedef boost::multi_array < double, 3 > | Array3d |
Data structure to represent a 3D array. | |
Functions | |
double | gravSensFunc (double x, double y, double z, double, double, double) |
Computes the sensitivity for a particular point in the gravity. More... | |
double | computeSensIntegral (int i, int j, int k, const Array3d &eZ) |
Compute the sensitivity integral at a particular point in the mesh. More... | |
Eigen::MatrixXd | computeSensitivity (const Eigen::VectorXd &xEdges, const Eigen::VectorXd &yEdges, const Eigen::VectorXd &zEdges, const Eigen::VectorXd &xField, const Eigen::VectorXd &yField, const Eigen::VectorXd &zField, const Eigen::MatrixXd &locations, double(*sensFunc)(double, double, double, double, double, double)) |
Computes the sensitivity for either gravity or magnetic. More... | |
double | magSensFunc (double x, double y, double z, double bx, double by, double bz) |
Calculate the magnetic sensitivity at a particular position relative to the origin. More... | |
Eigen::Matrix2cd | applyRotation (const Eigen::Matrix2cd &Z, double phaseBelow, double phaseAbove) |
Rotate the impedance matrix based on the phases of the layers. More... | |
double | primaryAngle (double y, double x) |
Calculates the primary angle of a vector. More... | |
Variables | |
constexpr std::complex< double > | I = std::complex<double>(0, 1) |
Constant representing the imaginary number i. | |
const double | EPS = 1e-12 |
A small number added to denominators to prevent them from being zero. | |
constexpr double | MU = 4 * M_PI * 1e-7 |
Constant for the permeability of free space. | |
Namespace for internal functions used by forward models.
Eigen::Matrix2cd obsidian::fwd::detail::applyRotation | ( | const Eigen::Matrix2cd & | Z, |
double | phaseBelow, | ||
double | phaseAbove | ||
) |
Rotate the impedance matrix based on the phases of the layers.
Z | The impedance matrix. |
phaseBelow | The phase of the layer below. |
phaseAbove | The phase of the layer above. |
double obsidian::fwd::detail::computeSensIntegral | ( | int | i, |
int | j, | ||
int | k, | ||
const Array3d & | eZ | ||
) |
Compute the sensitivity integral at a particular point in the mesh.
i,j,k | The indices of the mesh point |
eZ | The 3D array containing the sensitivities at each mesh grid point |
Eigen::MatrixXd obsidian::fwd::detail::computeSensitivity | ( | const Eigen::VectorXd & | xEdges, |
const Eigen::VectorXd & | yEdges, | ||
const Eigen::VectorXd & | zEdges, | ||
const Eigen::VectorXd & | xField, | ||
const Eigen::VectorXd & | yField, | ||
const Eigen::VectorXd & | zField, | ||
const Eigen::MatrixXd & | locations, | ||
double(*)(double, double, double, double, double, double) | sensFunc | ||
) |
Computes the sensitivity for either gravity or magnetic.
xEdges,yEdges,zEdges | The coordinates of the mesh grid in the x, y, and z directions. |
xField,yField,zField | The geological field values at each of the mesh grid points. |
locations | A Nx3 matrix containing the coordinates of each. sensor observation location. |
sensFunc | The function to compute the sensitivity. |
double obsidian::fwd::detail::gravSensFunc | ( | double | x, |
double | y, | ||
double | z, | ||
double | , | ||
double | , | ||
double | |||
) |
Computes the sensitivity for a particular point in the gravity.
x,y,z | The coordinate of the point in 3D space |
double obsidian::fwd::detail::magSensFunc | ( | double | x, |
double | y, | ||
double | z, | ||
double | bx, | ||
double | by, | ||
double | bz | ||
) |
Calculate the magnetic sensitivity at a particular position relative to the origin.
x,y,z | The coordinates of the position. |
bx,by,bz | The magnetic field at this position |
double obsidian::fwd::detail::primaryAngle | ( | double | y, |
double | x | ||
) |
Calculates the primary angle of a vector.
y | The imaginary part of the phase. |
x | The real part of the phase. |