/** * \file Solver.h * \brief Solver class declaration * \class Solver * * \brief Elliptic solver for ionospheric potential * * \author Slava Merkin (vgm at bu.edu) * \since 06-2007 * * This class contains functions and variables for solving elliptic * equation for the ionospheric potential. It also defines the solver * grid and functions that help to interpolate to/from this grid to * MHD and ITM models */ #ifndef SOLVER_H #define SOLVER_H #include "Overture.h" #include "DataPointMapping.h" #include "SquareMapping.h" #include "MappedGridOperators.h" #include "interpolatePoints.h" #include "Oges.h" #include "PlotStuff.h" #include #include #include "const.h" #include "functions.h" class Solver { public: friend class IO; friend class Conductance; /**\brief Class constructor */ Solver(const real, const real, const real); Solver(const int, const real *, const real); /**\brief Generates the XY projection of the solver grid*/ CompositeGrid generateCartesian2DGrid() const; /**\brief Generates the angular coordinates grid covering the entire globe */ CompositeGrid generateSMGlobeGrid(); /**\brief Obtains the solution of the elliptical equation for the potential */ void solve(realCompositeGridFunction &, const bool) ; /**\brief Used to map MHD grid functions to the solver grid*/ void mapToSolverGrid(realCompositeGridFunction &, realCompositeGridFunction &); /**\brief Used to map solver grid functions to MHD grid */ void mapFromSolverGrid(realCompositeGridFunction &, realCompositeGridFunction &); /**\brief Used to map north and south Solver grid functions to the entire globe*/ void mapToSMGlobe(realCompositeGridFunction &, realCompositeGridFunction &) const; /**\brief Returns dimensions of the Solver grid. Deprecated */ void getDimensions(int &,int &) const; private: /**\brief Generates solver rectangular grid in angular spherical coordinates*/ MappedGrid generateSpherical2DGrid() const; /**\brief Generates solver rectangular grid in angular spherical coordinates without pole */ MappedGrid generateSpherical2DGrid_CutPole() const; /** Solver rectangular grid in angular spherical coordinates. Obtained from generateSpherical2DGrid() in the contructor and is used later in solver()*/ MappedGrid solverSphericalGrid, solverSphericalGrid_CutPole; /**\name Solver grid definition */ //@{ real lowLatBound; //!