⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limcti.h

📁 pic 模拟程序!面向对象
💻 H
字号:
/**  * Li Monte Carlo Tunneling Ionization (LiMCTI) class. * Specializes the MCTIPackage class for the simulations  * of tunneling ionization of He under the influence * of linearly polarized alternating electric field. *  * This class implements the formula for the probability * rate for tunneling ionization from:  * N. B. Delone and V. P. Krainov, "Multiphonon Processes * in Atoms", Springer (2000), Eq. (4.6) on page 71 with * quantum numbers (n, l, m) = (1 or 2, 0, 0), i.e. only for * tunneling ionization from the ground state.  * This formula is expected to be applicable only for electric  * field magnitudes: E << E_atomic = Z/(16n^4).  * The adiabatic approximation condition for tunneling is: * omega << E_i and  * gamma^2 << 1, where gamma = omega*sqrt(2*E_i)/E, * omega is the frequency of the alternating electric  * field with magnitude E, and E_i is the magnitude  * of the bound state energy from which the electron is * to tunnel. * * First added June, 2001. * * @author D. A. Dimitrov */#include "mcc.h"#include <oops.h>class LiMCTI : public MCTIPackage { public:  LiMCTI(Scalar p, Scalar temp, Species* eSpecies, Species* iSpecies,           SpeciesList& sList, Scalar dt, int ionzFraction, Scalar ecxFactor,         Scalar icxFactor, SpatialRegion* _SR,         Scalar _Min1MKS, Scalar _Max1MKS, Scalar _Min2MKS, Scalar _Max2MKS,         Scalar _delayTime, Scalar _stopTime, const ostring &analyticF,          const int& numMacroParticlesPerCell,          const int& ETIPolarizationFlag, Scalar argEfieldFrequency,         const int& discardDumpFileNGDDataFlag) throw(Oops);  ~LiMCTI();  void tunnelIonize(ParticleGroupList** pgList, ParticleList& pList) throw(Oops); private:  static int const Ztot;   // charge of the nucleus (He)  Scalar* nStar;           // effective principal quantum #  int* Zti;                // charge of the atomic residue after each ti  Scalar* Ei;              // electron bound level ground state energies  Scalar* wLinearFactor;   // a constant factor for each bound state's                           // tunneling ionization probability rate                           // for linearly polarized E field  Scalar* wCircularFactor; // a constant factor for each bound state's                           // tunneling ionization probability rate                           // for circularly polarized and static E fields  /**   * limiting value of the atomic field above for which the    * probability for tunneling ionization becomes equal to   * unity for a given value of the time step.   */  Scalar* EmaxTI;  /**   * Value of the E field below which the Keldish condition   * is violated. The probability for tunneling ionization    * for fields smaller than this value will be set to zero.    */  Scalar* EminTI;  // do not allow copy and assignment  LiMCTI(const LiMCTI&);  LiMCTI& operator=(const LiMCTI&);    /**   * a helper function to calculate the probability for tunneling    * ionization of Hydrogen ions from the ground state   */  Scalar TIProbability(Scalar (LiMCTI::*P)(Scalar&, Scalar&, int) const,                        Scalar& E, Scalar& dt, int Zindex) throw(Oops);    /**   * A helper function to calculate the circular E field   * probability for the magnitude E of the field and time   * step dt (both in atomic units).    */  Scalar getCircularFieldProbabilityTI(Scalar& E, Scalar& dt,                                        int Zindex) const {    return (wCircularFactor[Zindex]*pow(E, (Scalar)(1.0-2.0*nStar[Zindex]))*            exp(-pow((Scalar)(2.0*Ei[Zindex]), (Scalar)1.5)/(1.5*E))*dt);  }  /**   * A helper function to calculate the linear polarized alternating E field   * probability for E magnitude of the field and time   * step dt (both in atomic units).   */  Scalar getLinearFieldProbabilityTI(Scalar& E, Scalar& dt,                                      int Zindex) const {    return (wLinearFactor[Zindex]*pow(E, (Scalar)(1.5-2.0*nStar[Zindex]))*            exp(-pow((Scalar)(2.0*Ei[Zindex]), (Scalar)1.5)/(1.5*E))*dt);  }  /**   * A pointer to the function that will be used to calculate the   * tunneling ionization probabilities. For now this pointer    * will point to getCircluarFieldProbabilityTI(Scalar& E, Scalar& dt)   * or to getLinearFieldProbabilityTI(Scalar& E, Scalar& dt) to   * cover the two cases (circularly or linearly polarized alternating E   * field) of TI from the ground state of Hydrogen.   */  Scalar (LiMCTI::*fp)(Scalar&, Scalar&, int) const;  /**   * A helper function to calculate the values if the effective   * principal quantum number nStar using the Hydrogen-like   * relation with the bound state energy and the charge Z,    * both in atomic units.    */  Scalar get_nStar(Scalar E, Scalar Z) const { return (Z/pow(2.0*E, 0.5)); }};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -