MagneticFieldModel.h
Go to the documentation of this file.
1 #ifndef _fwk_MagneticFieldModel_h_
2 #define _fwk_MagneticFieldModel_h_
3 
12 //#include <utl/AugerException.h>
13 #include <utl/Vector.h>
14 #include <utl/Point.h>
15 #include <utl/AugerUnits.h>
16 #include <utl/UTCDateTime.h>
17 
18 #include <fwk/CoordinateSystemRegistry.h>
19 #include <fwk/LocalCoordinateSystem.h>
20 
22 #include "ParametricGeoMagChange.h"
23 
24 namespace fwk {
25 
34 
35  public:
36  static MagneticFieldModel& instance();
37 
39  static utl::Vector GetMagneticFieldVector(const utl::Point &position,
40  const utl::TimeStamp &time);
41 
43  static double GetDeclination(const utl::Point &position,
44  const utl::TimeStamp &time);
45 
47  static double GetInclination(const utl::Point &position,
48  const utl::TimeStamp &time);
49 
51  static double GetStrength(const utl::Point &position,
52  const utl::TimeStamp &time)
53  {return GetMagneticFieldVector(position, time).GetMag();}
54 
55 
59  {
60  const utl::UTCDateTime date(time);
61  return ModelForTime(date);
62  }
63 
64  private:
66  void Init();
67 
68  protected:
69  std::vector <ParametricGeoMagneticField> fModels;
71 
72  double decimalYear(int year, int month, int day);
73 };
74 
75 } // fwk
76 
77 #endif
static double GetInclination(const utl::Point &position, const utl::TimeStamp &time)
returns inclination in radians
Point object.
Definition: Point.h:32
Rate-of-change model for spherical harmonics parametrisation of geomagnetic field.
static double GetDeclination(const utl::Point &position, const utl::TimeStamp &time)
returns declination in radians
double GetMag() const
Definition: Vector.h:58
A TimeStamp holds GPS second and nanosecond for some event.
Definition: TimeStamp.h:110
static MagneticFieldModel & instance()
static utl::Vector GetMagneticFieldVector(const utl::Point &position, const utl::TimeStamp &time)
returns the magnetic field at a specific place at a specific time
ParametricGeoMagneticField ModelForTime(const utl::UTCDate &date)
ParametricGeoMagneticField ModelForYear(double year)
ParametricGeoMagneticField ModelForTime(const utl::TimeStamp &time)
Spherical harmonics parametrisation of geomagnetic field.
static double GetStrength(const utl::Point &position, const utl::TimeStamp &time)
returns field strength of magnetic field
Vector object.
Definition: Vector.h:30
Get the magnetic field of the earth dependent on location and time.
std::vector< ParametricGeoMagneticField > fModels
double decimalYear(int year, int month, int day)
ParametricGeoMagChange * fChangeModel
constexpr double day
Definition: AugerUnits.h:151
const double year
Definition: GalacticUnits.h:22

, generated on Tue Sep 26 2023.