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

📄 functional.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
📖 第 1 页 / 共 2 页
字号:
class SlaterXFunctional: public DenFunctional {  protected:  public:    SlaterXFunctional();    SlaterXFunctional(const Ref<KeyVal> &);    SlaterXFunctional(StateIn &);    ~SlaterXFunctional();    void save_data_state(StateOut &);    void point(const PointInputData&, PointOutputData&);};/** An abstract base class from which the various VWN (Vosko, Wilk and    Nusair) local correlation functional (1, 2, 3, 4, 5) classes are    derived.    S. H. Vosko, L. Wilk, and M. Nusair, Can. J. Phys., 58, pp. 1200-1211,    1980.*/class VWNLCFunctional: public LSDACFunctional {  protected:    double Ap_, Af_, A_alpha_;    double x0p_mc_, bp_mc_, cp_mc_, x0f_mc_, bf_mc_, cf_mc_;    double x0p_rpa_, bp_rpa_, cp_rpa_, x0f_rpa_, bf_rpa_, cf_rpa_;    double x0_alpha_mc_, b_alpha_mc_, c_alpha_mc_;    double x0_alpha_rpa_, b_alpha_rpa_, c_alpha_rpa_;    void init_constants();    double F(double x, double A, double x0, double b, double c);    double dFdr_s(double x, double A, double x0, double b, double c);  public:    VWNLCFunctional();    VWNLCFunctional(const Ref<KeyVal> &);    VWNLCFunctional(StateIn &);    ~VWNLCFunctional();    void save_data_state(StateOut &);    virtual      void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};    /** The VWN1LCFunctional computes energies and densities using the    VWN1 local correlation term (from Vosko, Wilk, and Nusair). */class VWN1LCFunctional: public VWNLCFunctional {  protected:    double x0p_, bp_, cp_, x0f_, bf_, cf_;  public:    /// Construct a VWN1 functional using Monte-Carlo parameters.    VWN1LCFunctional();    /// Construct a VWN1 functional using the RPA parameters.    VWN1LCFunctional(int use_rpa);    /** Construct a VWN1 functional using the Monte-Carlo parameters by        default.  If rpa is set to true, then load the RPA paramenters.        Furthermore, each value can be overridden by assigning to        x0p, bp, cp, x0f, bf, and/or cf.    */    VWN1LCFunctional(const Ref<KeyVal> &);    VWN1LCFunctional(StateIn &);    ~VWN1LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&,                  double &, double &, double &);};/** The VWN2LCFunctional computes energies and densities using the    VWN2 local correlation term (from Vosko, Wilk, and Nusair). */class VWN2LCFunctional: public VWNLCFunctional {  protected:  public:    /// Construct a VWN2 functional.    VWN2LCFunctional();    /// Construct a VWN2 functional.    VWN2LCFunctional(const Ref<KeyVal> &);    VWN2LCFunctional(StateIn &);    ~VWN2LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** The VWN3LCFunctional computes energies and densities using the    VWN3 local correlation term (from Vosko, Wilk, and Nusair). */class VWN3LCFunctional: public VWNLCFunctional {  protected:    int monte_carlo_prefactor_;    int monte_carlo_e0_;  public:    VWN3LCFunctional(int mcp = 1, int mce0 = 1);    VWN3LCFunctional(const Ref<KeyVal> &);    VWN3LCFunctional(StateIn &);    ~VWN3LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** The VWN4LCFunctional computes energies and densities using the    VWN4 local correlation term (from Vosko, Wilk, and Nusair). */class VWN4LCFunctional: public VWNLCFunctional {  protected:    int monte_carlo_prefactor_;  public:    VWN4LCFunctional();    VWN4LCFunctional(const Ref<KeyVal> &);    VWN4LCFunctional(StateIn &);    ~VWN4LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** The VWN5LCFunctional computes energies and densities using the    VWN5 local correlation term (from Vosko, Wilk, and Nusair). */class VWN5LCFunctional: public VWNLCFunctional {  protected:  public:    VWN5LCFunctional();    VWN5LCFunctional(const Ref<KeyVal> &);    VWN5LCFunctional(StateIn &);    ~VWN5LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** Implements the PW92 local (LSDA) correlation term.  This local    correlation functional is used in PW91 and PBE.    J. P. Perdew and Y. Wang.  Phys. Rev. B, 45, 13244, 1992.*/class PW92LCFunctional: public LSDACFunctional {  protected:    double F(double x, double A, double alpha_1, double beta_1, double beta_2,              double beta_3, double beta_4, double p);    double dFdr_s(double x, double A, double alpha_1, double beta_1, double beta_2,              double beta_3, double beta_4, double p);  public:    PW92LCFunctional();    PW92LCFunctional(const Ref<KeyVal> &);    PW92LCFunctional(StateIn &);    ~PW92LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** Implements the PZ81 local (LSDA) correlation functional.  This local   correlation functional is used in P86.   J. P. Perdew and A. Zunger, Phys. Rev. B, 23, pp. 5048-5079, 1981.*/class PZ81LCFunctional: public LSDACFunctional {  protected:    double Fec_rsgt1(double rs, double beta_1, double beta_2, double gamma);    double dFec_rsgt1_drho(double rs, double beta_1, double beta_2, double gamma,                           double &dec_drs);    double Fec_rslt1(double rs, double A, double B, double C, double D);    double dFec_rslt1_drho(double rs, double A, double B, double C, double D,                           double &dec_drs);  public:    PZ81LCFunctional();    PZ81LCFunctional(const Ref<KeyVal> &);    PZ81LCFunctional(StateIn &);    ~PZ81LCFunctional();    void save_data_state(StateOut &);    void point_lc(const PointInputData&, PointOutputData&, double &, double &, double &);};/** Implements the Xalpha exchange functional */class XalphaFunctional: public DenFunctional {  protected:    double alpha_;    double factor_;  public:    XalphaFunctional();    XalphaFunctional(const Ref<KeyVal> &);    XalphaFunctional(StateIn &);    ~XalphaFunctional();    void save_data_state(StateOut &);    void point(const PointInputData&, PointOutputData&);    void print(std::ostream& =ExEnv::out0()) const;};/** Implements Becke's 1988 exchange functional.    A. D. Becke, Phys. Rev. A, 38(6), pp. 3098-3100, 1988. */class Becke88XFunctional: public DenFunctional {  protected:    double beta_;    double beta6_;  public:    Becke88XFunctional();    Becke88XFunctional(const Ref<KeyVal> &);    Becke88XFunctional(StateIn &);    ~Becke88XFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};/** Implements the Lee, Yang, and Parr functional.    B. Miehlich, A. Savin, H. Stoll and H. Preuss, Chem. Phys. Lett.,    157(3), pp. 200-206, 1989.    C. Lee, W. Yang, and R. G. Parr, Phys. Rev. B, 37(2), pp 785-789,    1988. */class LYPCFunctional: public DenFunctional {  protected:    double a_;    double b_;    double c_;    double d_;    void init_constants();  public:    LYPCFunctional();    LYPCFunctional(const Ref<KeyVal> &);    LYPCFunctional(StateIn &);    ~LYPCFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};/** Implements the Perdew-Wang 1986 (PW86) Exchange functional.    J. P. Perdew and Y. Wang, Phys. Rev. B, 33(12), pp 8800-8802, 1986.*/class PW86XFunctional: public DenFunctional {  protected:    double a_;    double b_;    double c_;    double m_;    void init_constants();  public:    PW86XFunctional();    PW86XFunctional(const Ref<KeyVal> &);    PW86XFunctional(StateIn &);    ~PW86XFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};/** Implements the Perdew-Burke-Ernzerhof (PBE) exchange functional.    John P. Perdew, Kieron Burke, and Yue Wang, Phys. Rev. B, 54(23),    pp. 16533-16539, 1996.    John P. Perdew, Kieron Burke, and Matthias Ernzerhof, Phys. Rev. Lett.,    77(18), pp. 3865-3868 1996.    See also the comment and reply discussing the revPBE modification which    adjusts the value of kappa:    Yingkai Zhang and Weitao Yang, Phys. Rev. Lett., 80(4), pp. 890, 1998.    John P. Perdew, Kieron Burke, and Matthias Ernzerhof, Phys. Rev. Lett.,    80(4), pp. 891, 1998.  */class PBEXFunctional: public DenFunctional {  protected:    double mu;    double kappa;    void spin_contrib(const PointInputData::SpinData &,                      double &mpw, double &dmpw_dr, double &dmpw_dg);    void init_constants();  public:    PBEXFunctional();    PBEXFunctional(const Ref<KeyVal> &);    PBEXFunctional(StateIn &);    ~PBEXFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};/** The Perdew-Wang 1991 exchange functional computes energies and densities    using the designated local correlation functional.    J. P. Perdew, Proceedings of the 75. WE-Heraeus-Seminar and 21st Annual    International Symposium on Electronic Structure of Solids held in    Gaussig (Germany), March 11-15, 1991, P. Ziesche and H. Eschrig, eds.,    pp. 11-20.    J. P. Perdew, J. A. Chevary, S. H. Vosko, K. A. Jackson, M. R. Pederson,    and D. J. Singh, Phys. Rev. B, 46, 6671, 1992.  */class PW91XFunctional: public DenFunctional {  protected:    double a;    double b;    double c;    double d;    double a_x;    void spin_contrib(const PointInputData::SpinData &,                      double &mpw, double &dmpw_dr, double &dmpw_dg);    void init_constants();  public:    PW91XFunctional();    PW91XFunctional(const Ref<KeyVal> &);    PW91XFunctional(StateIn &);    ~PW91XFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};/** Implements a modified 1991 Perdew-Wang exchange functional.    C. Adamo and V. Barone, J. Chem. Phys., 108(2), pp. 664-674, 1998.*/class mPW91XFunctional: public DenFunctional {  protected:    double b;    double beta;    double c;    double d;    double a_x;    double x_d_coef;    void spin_contrib(const PointInputData::SpinData &,                      double &mpw, double &dmpw_dr, double &dmpw_dg);  public:    enum Func { B88, PW91, mPW91 };    /// Construct an mPW exchange functional.    mPW91XFunctional();    /** Construct an mPW form exchange functional using the given        functional variant.  The variant can be B88, PW91, or mPW91. */    mPW91XFunctional(Func variant);    /** Construct an mPW form exchange functional.        The following keywords are recognized:        <dl>          <dt><tt>constants</tt><dd> This can be B88 to give the Becke88          exchange functional; PW91, to give results similar to the PW91          exchange functional; or mPW91, to give the new functional          developed by Adamo and Barone.          <dt><tt>b</tt><dd>          <dt><tt>beta</tt><dd>          <dt><tt>c</tt><dd>           <dt><tt>d</tt><dd>          <dt><tt>x_d_coef</tt><dd>  The coefficient of \f$x^d\f$,          where \f$x\f$ is the reduced gradient.        </dl>    */    mPW91XFunctional(const Ref<KeyVal> &);    mPW91XFunctional(StateIn &);    ~mPW91XFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);    void init_constants(Func);};/** Implements the Gill 1996 (G96) exchange functional.    P. M. W. Gill, Mol. Phys., 89(2), pp. 433-445, 1996.*/class G96XFunctional: public DenFunctional {  protected:    double b_;    void init_constants();  public:    G96XFunctional();    G96XFunctional(const Ref<KeyVal> &);    G96XFunctional(StateIn &);    ~G96XFunctional();    void save_data_state(StateOut &);    int need_density_gradient();    void point(const PointInputData&, PointOutputData&);};}#endif// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

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