Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef MAGNETOTELLURICPOINTOPTIONS_H
00028 #define MAGNETOTELLURICPOINTOPTIONS_H
00029
00030 #include <QGpCoreTools.h>
00031
00032 #include "QGpCoreWaveDLLExport.h"
00033
00034 namespace QGpCoreWave {
00035
00036 class QGPCOREWAVE_EXPORT MagnetoTelluricPointOptions : public AbstractComplexPointOptions
00037 {
00038 public:
00039 enum OutputMode {ApparentResistivity, AbsoluteValue, PhaseDegrees, PhaseRadians, Real, Imaginary};
00040
00041 MagnetoTelluricPointOptions(OutputMode m=ApparentResistivity) : AbstractComplexPointOptions() {_mode=m;}
00042 MagnetoTelluricPointOptions(const MagnetoTelluricPointOptions& o) : AbstractComplexPointOptions() {_mode=o._mode;}
00043
00044 void setMode(OutputMode m) {_mode=m;}
00045 OutputMode mode() const {return _mode;}
00046
00047 virtual double toDouble(double x, const Complex& c) const;
00048 virtual void fromDouble(double x, Complex& c, double v) const;
00049
00050 static inline double toAbsoluteValue(double frequency, double apparentResistivity);
00051 static inline double toApparentResistivity(double frequency, double absoluteValue);
00052 private:
00053 OutputMode _mode;
00054 };
00055
00056 #define MAGNETIC_CONSTANT (4e-7*M_PI)
00057
00058 inline double MagnetoTelluricPointOptions::toAbsoluteValue(double frequency, double apparentResistivity)
00059 {
00060 return ::sqrt(apparentResistivity*(2*M_PI*frequency)/MAGNETIC_CONSTANT);
00061 }
00062
00063 inline double MagnetoTelluricPointOptions::toApparentResistivity(double frequency, double absoluteValue)
00064 {
00065 return absoluteValue*absoluteValue*MAGNETIC_CONSTANT/(2*M_PI*frequency);
00066 }
00067
00068 }
00069
00070 #endif // MAGNETOTELLURICPOINTOPTIONS_H