Lemma Namespace Reference

The only namespace used by Lemma. More...

Data Structures

class  DCIPElectrode
 Describes the location of an electrode used in a DC/IP survey. More...
 
class  DCSurvey
 Describes a DC survey. More...
 
class  AEMSurvey
 Contains pertinant information about an AEM survey. More...
 
class  AEMSurveyReader
 Reads an ASCII description of an AEM survey. More...
 
class  CircularLoop
 Analytic solution of a circular loop. More...
 
class  CompactSupportEMSource
 Abstract base class representing an EM source. More...
 
class  CosTransIntegrationKernel
 Integration kernel for testing cosine transform. More...
 
class  DataFEM
 
class  DataReaderFem
 
class  DataReaderFemUBC
 Reads UBC-format observation files. More...
 
class  DigitalFilterIntegratorAnderson
 Reimplimentation of Walt Anderson's digital filtering algorithms which are public domain. More...
 
class  DipoleSource
 Dipole sources form the backbone of Lemma. More...
 
class  NullDipoleSource
 If no dipole source has been specified, throw this error. More...
 
class  NonValidDipoleTypeAssignment
 Error class for assignment of a dipole source that did not connect properly. More...
 
class  NonValidDipoleType
 Error class for a non-valid dipole type. More...
 
class  NonValidDipolePolarisation
 Error class for non valid dipole polarisation. More...
 
class  NonValidDipolePolarity
 Error class for non valid dipole polarity. More...
 
class  NonValidDipolePolarisationAssignment
 Error class for non valid dipole polarisation. More...
 
class  NonValidLocationCoordinate
 Error class for non valid location coordinate. More...
 
class  EMEarth1D
 Implimentation of 1D EM solution. More...
 
class  NullReceivers
 If a Receivers Class is NULL valued, throw this. More...
 
class  NullAntenna
 If an Antenna is NULL valued, throw this error. More...
 
class  NullInstrument
 If an Instrument is NULL valued, throw this error. More...
 
class  DipoleSourceSpecifiedForWireAntennaCalc
 If a dipole source is specified, but a method calling a wire antenna is called, throw this. More...
 
class  FastCosTransformAnderson
 Cosine Transform via digital filters. More...
 
class  FastSinTransformAnderson
 Sine Transform via digital filters. More...
 
class  DigitalFilterCosTrans
 Cosine Transform via digital filters. More...
 
class  FHT
 Impliments lagged and related fast Hankel transform through digital filtering. More...
 
class  FHTAnderson801
 Computes the Hankel transform of orders 0 and 1 using lagged and related convolutions. More...
 
class  FHTKey101
 Impliments the fast Hankel transform as outlines by Key 2011. More...
 
class  FHTKey201
 Impliments the fast Hankel transform as outlines by Key 2011. More...
 
class  FHTKey51
 Impliments the fast Hankel transform as outlines by Key 2011. More...
 
class  FieldPoints
 Points in the subsurface where 1D EM calculations are made. More...
 
class  gaussianquadrature
 Numerical integration via Legendre-Gauss Quadrature. More...
 
class  GQChave
 Calculates hankel transform using gaussian quadrature. More...
 
class  LowerGaussLimitGreaterThanUpperGaussLimit
 If the lower integration limit is greater than the upper limit, throw this error. More...
 
class  HankelTransform
 Abstract class for hankel transforms. More...
 
class  HankelTransformFactory
 Factory generator of HankelTranform types. More...
 
class  InstrumentFem
 
class  IntegrationKernel
 Abstract class that computes arguments for numerical integrators. More...
 
class  InverseSolver
 Abstract class for inverse problem solver. More...
 
class  Kernel
 Pure abstract class for some kind of kernel function. More...
 
class  KernelEM1DBase
 Pure virtual base class of KernelEm1D. More...
 
class  KernelEM1DManager
 Keeps track of Kernels for EM1D. More...
 
class  KernelEM1DSpec
 Optimized version of KernelEm1D. More...
 
class  KernelEM1DReflBase
 Abstract class defining EM1DRefl class. More...
 
class  KernelEM1DReflSpec
 Specialized version of KernelEM1DReflBase. More...
 
class  LayeredEarthEM
 1D layered earth. Attributes include all aspects of Cole-Cole model. More...
 
class  LayeredEarthEMReader
 Reads ASCII representation of LayeredEarth, similiar to UBC format. More...
 
class  MagneticDipole
 Magnetic Dipole. More...
 
class  ModelReaderFem1D
 
class  OctreeGrid
 An Octree class, builds off VtkHyperOctree so this class can only be used when compiled with VTK libs. More...
 
class  PolygonalWireAntenna
 Class representing polygonal wire antennae. More...
 
class  QWEKey
 Port of Key's quadrature with extrapolation Hankel transform algorithm. More...
 
class  ReceiverCubes
 This class builds on Reciver points, but supports a cube around each point. More...
 
class  SinTransIntegrationKernel
 Integration kernel for testing sinine transform. More...
 
class  UngroundedElectricDipole
 Ungrounded electric dipole. More...
 
class  WireAntenna
 Class representing a wire antennae. More...
 
class  ASCIIParser
 Provides ASCII input file parsing. More...
 
struct  SplineSet
 Simple struct to hold spline terms. More...
 
class  CubicSplineInterpolator
 Real 1D Natural cubic spline interpolator. More...
 
class  Data
 Abstract class for data from an instrument. More...
 
class  DataReader
 Abstract class whose derived members read data files and converts them to Data Classes. More...
 
class  EarthModel
 abstract class for Earth models More...
 
class  NullEarth
 If the Earth class is NULL valued, throw this. More...
 
class  Filter
 Abstract class for filtering. More...
 
class  Grid
 Abstract base class for grids. More...
 
class  GridReader
 Abstract class for grid readers. More...
 
class  IndentingOStreambuf
 
class  Instrument
 Abstract class for instruments. More...
 
class  LayeredEarth
 Abstract 1D layered earth. More...
 
class  EarthModelWithLessThanTwoLayers
 If a model with less than two layers is specified, throw error. More...
 
class  EarthModelWithMoreThanMaxLayers
 If a solver has a max number of layers, and this is exceeded, throw this error. More...
 
class  EarthModelParametersDoNotMatchNumberOfLayers
 If the model parameters have different lengths than the earth model, throw this error. More...
 
class  RequestForNonValidEarthModelParameter
 If a request if made for a non-valid earth model parameter, throw this error. More...
 
class  LemmaObject
 Abstract class providing common interface for Lemma Objects. More...
 
class  DeSerializeTypeMismatch
 Error called when DeSerializing breaks. More...
 
class  AssignmentOutOfBounds
 If an assignment is made that is out of bounts, throw this. More...
 
class  RequestToReturnNullPointer
 If a pointer to a class is requested, but it is NULL valued, throw this. More...
 
class  MatFileCannotBeOpened
 If an error in opening a .mat file is encountered, throw this. More...
 
class  GenericFileIOError
 Generic file I/O error. More...
 
class  RectilinearGrid
 Impliments a rectilinear grid. More...
 
class  RectilinearGridReader
 Base Class for rectilinear grid reader data files. More...
 
class  RectilinearGridVTKExporter
 Exports a LemmaRectilinearGrid into a VTKRectilinearGrid. More...
 
class  RectilinearGridVTKImporter
 
class  jsw_timer
 Simple timer class. More...
 
class  WindowFilter
 Fourier domain window filter. More...
 
class  DataReaderTem
 
class  DataTEM
 Class for TEM data. More...
 
class  InstrumentTem
 TEM Instrument Class. More...
 
class  InverseSolverTEM1D
 Inversion for 1D TEM data. More...
 
class  ModelReaderTem1D
 Model reader class for forward modelling 1D TEM data. More...
 
class  ModelReaderTem1DUBC
 Model reader class for forward modelling 1D TEM data. More...
 
class  TEMInductiveReceiver
 Derived class of TEMReceiver. More...
 
class  TemIntegrationKernel
 Integration kernel for calculation of TEM data. More...
 
class  TEMReceiver
 Describes a TEM receiver. More...
 
class  TEMSurvey
 Describes a TEM survey. More...
 
class  TEMSurveyData
 Holds data from a TEMSurvey. More...
 
class  TEMSurveyLine
 Represents a TEM survey line. More...
 
class  TEMSurveyLineData
 Holds Data for a TEM survey line. More...
 
class  TEMSurveyLineRecord
 Class holding everything necessary to create a TEM record. More...
 
class  TEMSurveyLineRecordData
 
class  TEMTransmitter
 Describes a TEM transmitter. More...
 

Typedefs

typedef double Real
 Real defines precision for the whole API, default is double.
 
typedef std::complex< RealComplex
 Complex version of Real.
 
typedef Eigen::Matrix< Real, 3, 1 > Vector3r
 A 3 component Eigen vector of Reals.
 
typedef Eigen::Matrix< Real,
Eigen::Dynamic, 1 >::Index 
Index
 
typedef Eigen::Matrix< Real,
3, Eigen::Dynamic > 
Vector3Xr
 A 3 X Dynamic Component Eigen matrix of Reals.
 
typedef Eigen::Matrix< Real,
Eigen::Dynamic, 1 > 
VectorXr
 Variable length Eigen vector of Reals.
 
typedef Eigen::Matrix< int,
Eigen::Dynamic, 1 > 
VectorXi
 Variable length Eigen vector of integers (int)
 
typedef Eigen::Matrix< Complex,
Eigen::Dynamic, 1 > 
VectorXcr
 Variable length Eigen vector of Complexes.
 
typedef Eigen::Matrix< Complex, 3, 1 > Vector3cr
 A 3 Component Eigen vector of Complexes.
 
typedef Eigen::Matrix< Complex,
3, Eigen::Dynamic > 
Vector3Xcr
 A 3 X Dynamic Component Eigen matrix of Complexes.
 
typedef Eigen::Matrix< Real,
Eigen::Dynamic, Eigen::Dynamic > 
MatrixXr
 Variable length Eigen Matrix of Reals.
 
typedef Eigen::Matrix< int,
Eigen::Dynamic, Eigen::Dynamic > 
MatrixXi
 Variable length Eigen Matrix of ints.
 
typedef Eigen::Matrix< Complex,
Eigen::Dynamic, Eigen::Dynamic > 
MatrixXcr
 Variable length Eigen vector of Complexes.
 

Enumerations

enum  TXRXMODE { TX, RX, TXRX, NOMODE }
 
enum  EMMODE { TM, TE, NONE }
 
enum  DIPOLE_LOCATION { INAIR, INGROUND }
 
enum  sZeroType { J0, J1, NPI }
 breakpoint to use in division of domain, based on zeros of bessel function or regular nPi spacing.
 
enum  MAGUNITS { TESLA, NANOTESLA, GAUSS }
 Some functions will convert units from SI (standard) to Gauss This is because NMR calculations are much more natural in Gauss.
 
enum  TEMPUNITS { CELCIUS, KELVIN }
 Unit of temperature entered.
 
enum  TIMEUNITS {
  SEC, MILLISEC, MICROSEC, NANOSEC,
  PICOSEC
}
 Unit of time entered.
 
enum  FREQUENCYUNITS { HZ, KHZ, MHZ, GHZ }
 Unit of time entered.
 
enum  FEMCOILORIENTATION { COAXIAL, COPLANAR }
 FEM coil relative orientations.
 
enum  ORIENTATION {
  X, Y, Z, NX,
  NY, NZ
}
 General orientation relative to coordinate system.
 
enum  FIELDTYPE { HFIELDREAL, HFIELDIMAG, EFIELDREAL, EFIELDIMAG }
 Type of field.
 
enum  FIELDCOMPONENT { XCOMPONENT =0, YCOMPONENT =1, ZCOMPONENT =2 }
 Compenent of vector field.
 
enum  SPATIALCOORDINANT { XCOORD =0, YCOORD =1, ZCOORD =2 }
 Spatial component of vector.
 
enum  HANKELTRANSFORMTYPE {
  ANDERSON801, CHAVE, FHTKEY201, FHTKEY101,
  FHTKEY51, QWEKEY, FHTKONG61, FHTKONG121,
  FHTKONG241, IRONS
}
 Evaluation method for Hankel integrals. More...
 
enum  DIPOLESOURCETYPE { NOSOURCETYPE, GROUNDEDELECTRICDIPOLE, UNGROUNDEDELECTRICDIPOLE, MAGNETICDIPOLE }
 Enum is OK because these are the only physically possible sources. More...
 
enum  DipoleSourcePolarisation { NOPOLARISATION, XPOLARISATION, YPOLARISATION, ZPOLARISATION }
 Only three polarizations are supported. They may be summed to approximate others. More...
 
enum  DipoleSourcePolarity { NEGATIVE, POSITIVE }
 The polarity may be either negative or positinve.
 
enum  FIELDCALCULATIONS { E, H, BOTH }
 The fields to make calculations on.
 
enum  WINDOWTYPE { HAMMING, HANNING, RECTANGULAR }
 Windowing function type. More...
 
enum  ReceiverType { INDUCTIVE, MAGNETOMETER, ELECTRIC }
 

Functions

std::ostream & operator<< (std::ostream &stream, const DCIPElectrode &ob)
 
std::ostream & operator<< (std::ostream &stream, const DCSurvey &ob)
 
template<typename Scalar >
std::ostream & operator<< (std::ostream &stream, const DigitalFilterIntegratorAnderson< Scalar > &ob)
 
std::ostream & operator<< (std::ostream &stream, const AEMSurvey &ob)
 
std::ostream & operator<< (std::ostream &stream, const AEMSurveyReader &ob)
 
std::ostream & operator<< (std::ostream &stream, const CircularLoop &ob)
 
std::ostream & operator<< (std::ostream &stream, const CompactSupportEMSource &ob)
 
std::ostream & operator<< (std::ostream &stream, const DataFEM &ob)
 
std::ostream & operator<< (std::ostream &stream, const DataReaderFemUBC &ob)
 
std::ostream & operator<< (std::ostream &stream, const DipoleSource &ob)
 
std::ostream & operator<< (std::ostream &stream, const EMEarth1D &ob)
 
std::ostream & operator<< (std::ostream &stream, const FastCosTransformAnderson &ob)
 
std::ostream & operator<< (std::ostream &stream, const FastSinTransformAnderson &ob)
 
std::ostream & operator<< (std::ostream &stream, const FHTAnderson801 &ob)
 
std::ostream & operator<< (std::ostream &stream, const FHTKey101 &ob)
 
std::ostream & operator<< (std::ostream &stream, const FHTKey201 &ob)
 
std::ostream & operator<< (std::ostream &stream, const FHTKey51 &ob)
 
std::ostream & operator<< (std::ostream &stream, const FieldPoints &ob)
 
std::ostream & operator<< (std::ostream &stream, const GQChave &ob)
 
std::ostream & operator<< (std::ostream &stream, const HankelTransform &ob)
 
std::ostream & operator<< (std::ostream &stream, const InstrumentFem &ob)
 
std::ostream & operator<< (std::ostream &stream, const InverseSolver &ob)
 
std::ostream & operator<< (std::ostream &stream, const Kernel &ob)
 
std::ostream & operator<< (std::ostream &stream, const KernelEM1DManager &ob)
 
std::ostream & operator<< (std::ostream &stream, const LayeredEarthEM &ob)
 
std::ostream & operator<< (std::ostream &stream, const LayeredEarthEMReader &ob)
 
std::ostream & operator<< (std::ostream &stream, const MagneticDipole &ob)
 
std::ostream & operator<< (std::ostream &stream, const ModelReaderFem1D &ob)
 
std::ostream & operator<< (std::ostream &stream, const OctreeGrid &ob)
 
std::ostream & operator<< (std::ostream &stream, const PolygonalWireAntenna &ob)
 
std::ostream & operator<< (std::ostream &stream, const QWEKey &ob)
 
std::ostream & operator<< (std::ostream &stream, const ReceiverCubes &ob)
 
std::ostream & operator<< (std::ostream &stream, const UngroundedElectricDipole &ob)
 
std::ostream & operator<< (std::ostream &stream, const WireAntenna &ob)
 
template<class T >
std::string to_string (const T &t)
 Convenience function for string conversion. More...
 
std::string enum2String (const FREQUENCYUNITS &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const TIMEUNITS &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const MAGUNITS &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const TEMPUNITS &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const FEMCOILORIENTATION &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const ORIENTATION &Units)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const FIELDCOMPONENT &Comp)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const HANKELTRANSFORMTYPE &Htype)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const FIELDCALCULATIONS &Htype)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const WINDOWTYPE &Wtype)
 convert enums to string saves repeated code useful for YAML serializing
 
std::string enum2String (const DIPOLESOURCETYPE &Wtype)
 convert enums to string saves repeated code useful for YAML serializing
 
template<typename T >
string2Enum (const std::string &str)
 
std::ostream & operator<< (std::ostream &stream, const ASCIIParser &ob)
 
std::ostream & operator<< (std::ostream &stream, const CubicSplineInterpolator &ob)
 
std::ostream & operator<< (std::ostream &stream, const Data &ob)
 
std::ostream & operator<< (std::ostream &stream, const DataReader &ob)
 
std::ostream & operator<< (std::ostream &stream, const EarthModel &ob)
 
std::ostream & operator<< (std::ostream &stream, const Filter &ob)
 
std::ostream & operator<< (std::ostream &stream, const Grid &ob)
 
template<>
FREQUENCYUNITS string2Enum< FREQUENCYUNITS > (const std::string &str)
 
template<>
HANKELTRANSFORMTYPE string2Enum< HANKELTRANSFORMTYPE > (const std::string &str)
 
template<>
TIMEUNITS string2Enum< TIMEUNITS > (const std::string &str)
 
template<>
FIELDCOMPONENT string2Enum< FIELDCOMPONENT > (const std::string &str)
 
template<>
WINDOWTYPE string2Enum< WINDOWTYPE > (const std::string &str)
 
template<>
DIPOLESOURCETYPE string2Enum< DIPOLESOURCETYPE > (const std::string &str)
 
std::ostream & operator<< (std::ostream &stream, const LayeredEarth &ob)
 
std::ostream & operator<< (std::ostream &stream, const RectilinearGrid &ob)
 
std::ostream & operator<< (std::ostream &stream, const RectilinearGridReader &ob)
 
std::ostream & operator<< (std::ostream &stream, const RectilinearGridVTKExporter &ob)
 
std::ostream & operator<< (std::ostream &stream, const RectilinearGridVTKImporter &ob)
 
std::ostream & operator<< (std::ostream &stream, const WindowFilter &ob)
 
std::ostream & operator<< (std::ostream &stream, const DataReaderTem &ob)
 
std::ostream & operator<< (std::ostream &stream, const DataTEM &ob)
 
std::ostream & operator<< (std::ostream &stream, const InstrumentTem &ob)
 
std::ostream & operator<< (std::ostream &stream, const InverseSolverTEM1D &ob)
 
std::ostream & operator<< (std::ostream &stream, const ModelReaderTem1D &ob)
 
std::ostream & operator<< (std::ostream &stream, const ModelReaderTem1DUBC &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMInductiveReceiver &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMReceiver &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurvey &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurveyData &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurveyLine &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurveyLineData &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurveyLineRecord &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMSurveyLineRecordData &ob)
 
std::ostream & operator<< (std::ostream &stream, const TEMTransmitter &ob)
 

Variables

const int MAXLAYERS = 10
 
const Real PI = 4.0*atan(1.0)
 Restating the obvious, this is pi.
 
const Real EPSILON0 = 8.854187817e-12
 Permitivity of Free Space.
 
const Real MU0 = 4.*PI*1e-7
 Permeability of free space.
 
const Real QPI = .25/PI
 1/4 of \( \pi\)
 

Detailed Description

The only namespace used by Lemma.

The rational behind this namespace is that built-in types should be used wherever possible, but not not built-in names. This allows for code that is better enacsulated and easier to modify. The typedefs and constants specified here are defined so that precision/inplimentation can easily be changed. All floating precision types should be typedefed in this file and should not be used natively within any code. Lemma uses the Eigen Matrix/Vector/Linear Algebra library. http://eigen.tuxfamily.org and a lot of the namespece typedefs are specifying Eigen types.

Enumeration Type Documentation

Only three polarizations are supported. They may be summed to approximate others.

Parameters
NOPOLARISATIONis uninitialized, default value
XPOLARISATIONis a dipole oriented in the x direction
YPOLARISATIONis a dipole oriented in the y direction
ZPOLARISATIONis a dipole oriented in the z direction

Enum is OK because these are the only physically possible sources.

Parameters
NOSOURCETYPEis default.
GROUNDEDELECTRICDIPOLEis an grounded electric dipole
UNGROUNDEDELECTRICDIPOLEis an ungrounded electric dipole
MAGNETICDIPOLEis a magnetic dipole

Evaluation method for Hankel integrals.

ANDERSON801 Walt Anderson's 801 point filter CHAVE Alan Chave's gaussian quadrature integration method FHTKEY201 Key's 201 point filter FHTKEY201 Key's 101 point filter FHTKEY51 Key's 51 point filter QWEKEY Key's Gaussian quadrature integration method

Windowing function type.

Enumerator
HAMMING 

A hamming window

HANNING 

A hanning window

RECTANGULAR 

Rectangular window