#ifndef CONDUCTANCE_H #define CONDUCTANCE_H /** * \file Conductance.h * \brief Conductance class declaration * \class Conductance * * \brief Class contains functions for calculation of auroral * precipitation and ionospheric conductance. * * \author Slava Merkin (vgm at bu.edu) * \since 08-2005 * * The Conductance class contains functions for calculation of auroral * precipitation parameters (energy and number flux of particles) as * well as functions calculating the ionospheric conductances locally * based on the EUV background ionization and precipitation * contributions *(Robinson's formula). The local conductance * calculation accords with the legacy LFM conductance model (Fedder * et al., [1995]) and is adapted to a large extent from * M. Wiltberger's set of subroutines developed for the OMP version of * the LFM code. * * The functions in this class assume that grid functions are defined * on the Solver grid. Therefore the functions of the class should be * called separately for the two hemispheres. * * \b References: * * Y. T. Chiu, A. L. Newman, J. M. Cornwall, "On the structures and * mapping of auroral electrostatic potentials", J. Geophys. Res., * V. 86, No. A12, pp. 10,029--10,037, 1981. * * J. A. Fedder, S. P. Slinker, J. G. Lyon, and R. D. Elphinstone, * "Global numerical simulation of the growth phase and the expansion * onset for a substorm observed by Viking", J. Geophys. Res., V. 100, * No. A10, pp. 19,083--19,093, 1995. * * M. Fridman and J. Lemaire, "Relationship between auroral electrons * fluxes and field aligned electric potential difference", * J. Geophys. Res., V. 85, N. A2, pp. 664--670, 1980. * * J. Moen and A. Brekke, The solar flux influence on quiet time * conductances in the auroral ionosphere, Geophys. Res. Lett., * 20(10), 971-974, 10.1029/92GL02109, 1993. * * R. M. Robinson, R. R. Vondrak, K. Miller, T. Dabbs, and D. Hardy, * "On calculating ionospheric conductances from the flux and energy * of precipitating electrons", J. Geophys. Res., V. 92, No. A3, * pp. 2,565--2,569, 1987. */ #include "Overture.h" #include "const.h" #include "Solver.h" #include "Params.h" class Conductance { public: enum EUV_MODEL {AMIE,MOEN_BREKKE}; /**\brief The class constructor.*/ Conductance(Solver *solver, const Params * const params); /**\brief This function calculates the average precipitation energy and number flux */ void precipitation(realCompositeGridFunction &solverFunctions, const real &tilt, const bool &HEMISPHERE); /**\brief The main function which calculates the ionospheric conductances.*/ void getTotal(realCompositeGridFunction &solverFunctions, const real &tilt, const bool &HEMISPHERE); void applyCap(realCompositeGridFunction &solverFunctions); private: /**********************************************************//** * \name Constants used in the local conductance model * * These variables are defined in the parameter file and are * initialized in the constructor. **************************************************************/ const int euvModelType; //!< O: AMIE; 1: MOEN_BREKKE const real alpha; //!< Enters \f$ E = \alpha c_s^2 \f$ (see fedder95()) const real beta; //!< Enters \f$ \Phi = \beta \rho E^{1/2} \f$ (see fedder95()) const real r;//!< Enters \f$ E_\parallel = R j_\parallel E_0^{1/2}/\rho \f$ (see fedder95()) const real f107; //!< F10.7 flux const real pedMin; //!< Minimum value of the Pedersen conductance allowed (see euv()) const real hallMin; //!< Minimum value of the Hall conductance allowed (see euv()) const real ped0; /*!<\brief When #constSigma is 1, the value of the Pedersen conductance is set to this value uniformly */ const real sigmaRatio; /*!<\brief If \f$\Sigma_H < \Sigma_P \cdot sigmaRatio\f$ then \f$\Sigma_H = \Sigma_P \cdot sigmaRatio\f$ */ const bool constSigma; /*!<\brief A boolean variable that specifies whether to use the ionospheric model or to set the Pedersen conductivity to ped0 and Hall to 0. */ /**********************************************************//** * \name Physical variables * * Arrays used to store the calculated physical variables **************************************************************/ realArray pedersen; //!< Pedersen conductance realArray hall; //!< Hall conductance realArray avgEng; //!< Average energy of precipitating electrons (keV) realArray numFlux; //!< Number flux of precipitating electrons (1/cm^2/s) realArray engFlux; //!< Energy flux of precipitating electrons ( ergs/cm^2/s) realArray deltaSigmaP; //!< Auroral contribution to Pedersen conductance realArray deltaSigmaH; //!< Auroral contribution to Hall conductance realArray euvSigmaP; //!< EUV ionization contribution to Pedersen conductance realArray euvSigmaH; //!< EUV ionization contribution to Hall conductance realArray sigmaP; //!< Total Pedersen conductance realArray sigmaH; //!< Total Hall conductance /** * \name External data * These are the dimensions and vertices of the Solver grid. They * are passed inside the Solver class and initialized in the * constructor. */ //@{ realArray x,y; int nLat,nLon; //@} /** \name External data * These are passed to precipitation() as grid functions on the * Solver grid. These functions are converted to #jpara, #cs, and * #rho in precipitation(). */ //@{ realArray jpara,cs,rho; //@} /**\brief Calculates the average energy and number flux of * precipitating electrons */ void fedder95(const real &tilt, const bool &HEMISPHERE); /**\brief Calculates auroral precipitation contribution to the * conductances (Robinson's formula essentially)*/ void aurora(); /**\brief Calculates EUV ionization contribution to the conductances */ void euv(const real); }; #endif