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

📄 simple.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
📖 第 1 页 / 共 2 页
字号:
\f[ \bar{u}_{ab} = \frac{\bar{r}_a - \bar{r}_b}{\| \bar{r}_a - \bar{r}_b \|}\f]\f[ \bar{u}_{cb} = \frac{\bar{r}_c - \bar{r}_b}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{u}_{cd} = \frac{\bar{r}_c - \bar{r}_d}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{n}_{abc}= \frac{\bar{u}_{ab} \times \bar{u}_{cb}}                       {\| \bar{u}_{ab} \times \bar{u}_{cb} \|} \f]\f[ \bar{n}_{bcd}= \frac{\bar{u}_{cd} \times \bar{u}_{bc}}                       {\| \bar{u}_{cd} \times \bar{u}_{bc} \|} \f]\f[ s = \left\{    \begin{array}{ll}        1 & \mbox{if $(\bar{n}_{abc}\times\bar{n}_{bcd}) \cdot \bar{u}_{cb}                  > 0;$} \\       -1 & \mbox{otherwise}    \end{array} \right. \f]\f[ \tau         = s \arccos ( - \bar{n}_{abc} \cdot \bar{n}_{bcd} ) \f]*/class TorsSimpleCo : public SimpleCo { SimpleCo_DECLARE(TorsSimpleCo)  public:    TorsSimpleCo();    TorsSimpleCo(const TorsSimpleCo&);    /** This constructor takes a string containing a label, and four     integers a, b, c, and d which give the indices of the atoms involved in     the torsion angle abcd. Atom numbering begins at atom 1, not atom 0. */    TorsSimpleCo(const char *refr, int, int, int, int);    /** The KeyVal constructor.  This calls the        SimpleCo keyval constructor with an integer argument of 4. */    TorsSimpleCo(const Ref<KeyVal>&);    ~TorsSimpleCo();    /// Always returns the string "TORS".    const char * ctype() const;        /// Returns the value of the angle abc in radians.    double radians() const;    /// Returns the value of the angle abc in degrees.    double degrees() const;    /// Returns the value of the angle abc in degrees.    double preferred_value() const;  };typedef TorsSimpleCo Tors;// ////////////////////////////////////////////////////////////////////////**The ScaledTorsSimpleCo class describes an scaled torsion internalcoordinate of a molecule.  The scaled torsion is more stable that ordinarytorsions (see the TorsSimpleCo class) in describing situationswhere one of the torsions plane's is given by three near linear atoms.Designating the four atoms as \f$a\f$, \f$b\f$, \f$c\f$, and \f$d\f$ andtheir cartesian positions as \f$\bar{r}_a\f$, \f$\bar{r}_b\f$,\f$\bar{r}_c\f$, and \f$\bar{r}_d\f$, the value of the coordinate,\f$\tau_s\f$, is given by\f[ \bar{u}_{ab} = \frac{\bar{r}_a - \bar{r}_b}{\| \bar{r}_a - \bar{r}_b \|}\f]\f[ \bar{u}_{cb} = \frac{\bar{r}_c - \bar{r}_b}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{u}_{cd} = \frac{\bar{r}_c - \bar{r}_d}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{n}_{abc}= \frac{\bar{u}_{ab} \times \bar{u}_{cb}}                       {\| \bar{u}_{ab} \times \bar{u}_{cb} \|}\f]\f[ \bar{n}_{bcd}= \frac{\bar{u}_{cd} \times \bar{u}_{cb}}                       {\| \bar{u}_{cd} \times \bar{u}_{cb} \|}\f]\f[ s = \left\{    \begin{array}{ll}      -1 & \mbox{if $(\bar{n}_{abc}\times\bar{n}_{bcd})                                  \cdot \bar{u}_{cb} > 0$} \\       1 & \mbox{otherwise}    \end{array}    \right.\f]\f[ \tau_s       = s \sqrt{\left(1-(\bar{u}_{ab} \cdot \bar{u}_{cb}\right)^2)                        \left(1-(\bar{u}_{cb} \cdot \bar{u}_{cd}\right)^2)}                  \arccos ( - \bar{n}_{abc} \cdot \bar{n}_{bcd} )\f] */class ScaledTorsSimpleCo : public SimpleCo { SimpleCo_DECLARE(ScaledTorsSimpleCo)  private:    double old_torsion_;  public:    ScaledTorsSimpleCo();    ScaledTorsSimpleCo(const ScaledTorsSimpleCo&);    /** This constructor takes a string containing a label, and four     integers a, b, c, and d which give the indices of the atoms involved in     the torsion angle abcd. Atom numbering begins at atom 1, not atom 0. */    ScaledTorsSimpleCo(const char *refr, int, int, int, int);    /** The KeyVal constructor.  This calls the        SimpleCo keyval constructor with an integer argument of 4. */    ScaledTorsSimpleCo(const Ref<KeyVal>&);    ~ScaledTorsSimpleCo();    /// Always returns the string "TORS".    const char * ctype() const;        /// Returns the value of the angle abc in radians.    double radians() const;    /// Returns the value of the angle abc in degrees.    double degrees() const;    /// Returns the value of the angle abc in degrees.    double preferred_value() const;  };typedef ScaledTorsSimpleCo ScaledTors;// ////////////////////////////////////////////////////////////////////////*The OutSimpleCo class describes an out-of-plane internal coordinateof a molecule.  The input is described in the documentation of its parentclass SimpleCo.Designating the four atoms as \f$a\f$, \f$b\f$, \f$c\f$, and \f$d\f$ andtheir cartesian positions as \f$\bar{r}_a\f$, \f$\bar{r}_b\f$,\f$\bar{r}_c\f$, and \f$\bar{r}_d\f$, the value of the coordinate,\f$\tau\f$, is given by\f[ \bar{u}_{ab} = \frac{\bar{r}_a - \bar{r}_b}{\| \bar{r}_a - \bar{r}_b \|}\f]\f[ \bar{u}_{cb} = \frac{\bar{r}_b - \bar{r}_c}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{u}_{db} = \frac{\bar{r}_c - \bar{r}_d}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{n}_{bcd}= \frac{\bar{u}_{cb} \times \bar{u}_{db}}                     {\| \bar{u}_{cb} \times \bar{u}_{db} \|}\f]\f[ \phi         = \arcsin ( \bar{u}_{ab} \cdot \bar{n}_{bcd} )\f]*/class OutSimpleCo : public SimpleCo { SimpleCo_DECLARE(OutSimpleCo)  public:    OutSimpleCo();    OutSimpleCo(const OutSimpleCo&);    /** This constructor takes a string containing a label, and four     integers a, b, c, and d which give the indices of the atoms involved in     the out-of-plane angle abcd. Atom numbering begins at atom 1, not     atom 0. */    OutSimpleCo(const char *refr, int, int, int, int);    /** The KeyVal constructor.  This calls the SimpleCo keyval        constructor with an integer argument of 4. */    OutSimpleCo(const Ref<KeyVal>&);    ~OutSimpleCo();    /// Always returns the string "OUT".    const char * ctype() const;        /// Returns the value of the angle abc in radians.    double radians() const;    /// Returns the value of the angle abc in degrees.    double degrees() const;    /// Returns the value of the angle abc in degrees.    double preferred_value() const;  };typedef OutSimpleCo Out;// ////////////////////////////////////////////////////////////////////////** The LinIPSimpleCo class describes an in-plane component of a linearbend internal coordinate of a molecule.  The input is described in thedocumentation of its parent class SimpleCo.  A vector, \f$\bar{u}\f$, givenas the keyword u, that is not colinear with either \f$\bar{r}_a -\bar{r}_b\f$ or \f$\bar{r}_b - \bar{r}_c\f$ must be provided, where\f$\bar{r}_a\f$, \f$\bar{r}_b\f$, and \f$\bar{r}_c\f$ are the positions ofthe first, second, and third atoms, respectively.  Usually, LinIPSimpleCo is used with a corresponding LinOPSimpleCo, whichis given exactly the same u.Designating the three atoms as \f$a\f$, \f$b\f$, and \f$c\f$ and theircartesian positions as \f$\bar{r}_a\f$, \f$\bar{r}_b\f$, and\f$\bar{r}_c\f$, the value of the coordinate, \f$\theta_i\f$, is given by\f[ \bar{u}_{ab} = \frac{\bar{r}_a - \bar{r}_b}{\| \bar{r}_a - \bar{r}_b \|}\f]\f[ \bar{u}_{cb} = \frac{\bar{r}_b - \bar{r}_c}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \theta_i     = \pi - \arccos ( \bar{u}_{ab} \cdot \bar{u} )                    - \arccos ( \bar{u}_{cb} \cdot \bar{u} )\f]*/class LinIPSimpleCo : public SimpleCo { SimpleCo_DECLARE(LinIPSimpleCo)  private:    SCVector3 u2;  public:    LinIPSimpleCo();    LinIPSimpleCo(const LinIPSimpleCo&);    /** This constructor takes a string containing a label, and three     integers a, b, and d which give the indices of the atoms involved in     the linear angle abc.  The last argument, u, is a unit vector     used to defined the direction in which distortion is measured.     Atom numbering begins at atom 1, not atom 0. */    LinIPSimpleCo(const char *refr, int, int, int, const SCVector3 &u);    /** The KeyVal constructor.  This calls the SimpleCo keyval        constructor with an integer argument of 3. */    LinIPSimpleCo(const Ref<KeyVal>&);    ~LinIPSimpleCo();    /// Always returns the string "LINIP".    const char * ctype() const;    /// Returns the value of the angle abc in radians.    double radians() const;    /// Returns the value of the angle abc in degrees.    double degrees() const;    /// Returns the value of the angle abc in degrees.    double preferred_value() const;  };typedef LinIPSimpleCo LinIP;// ////////////////////////////////////////////////////////////////////////** The LinOPSimpleCo class describes an out-of-plane component of a linearbend internal coordinate of a molecule.  The input is described in thedocumentation of its parent class SimpleCo.  A vector, \f$\bar{u}\f$, givenas the keyword u, that is not colinear with either \f$\bar{r}_a -\bar{r}_b\f$ or \f$\bar{r}_b - \bar{r}_c\f$ must be provided, where\f$\bar{r}_a\f$, \f$\bar{r}_b\f$, and \f$\bar{r}_c\f$ are the positions ofthe first, second, and third atoms, respectively.  Usually, LinOPSimpleCo is used with a corresponding LinIPSimpleCo, whichis given exactly the same u.Designating the three atoms as \f$a\f$, \f$b\f$, and \f$c\f$ and theircartesian positions as \f$\bar{r}_a\f$, \f$\bar{r}_b\f$, and\f$\bar{r}_c\f$, the value of the coordinate, \f$\theta_o\f$, is given by\f[ \bar{u}_{ab} = \frac{\bar{r}_a - \bar{r}_b}{\| \bar{r}_a - \bar{r}_b \|}\f]\f[ \bar{u}_{cb} = \frac{\bar{r}_b - \bar{r}_c}{\| \bar{r}_c - \bar{r}_b \|}\f]\f[ \bar{n}      = \frac{\bar{u} \times \bar{u}_{ab}}                       {\| \bar{u} \times \bar{u}_{ab} \|}\f]\f[ \theta_o     = \pi - \arccos ( \bar{u}_{ab} \cdot \bar{n} )                      - \arccos ( \bar{u}_{cb} \cdot \bar{n} )\f]*/class LinOPSimpleCo : public SimpleCo { SimpleCo_DECLARE(LinOPSimpleCo)  private:    SCVector3 u2;  public:    LinOPSimpleCo();    LinOPSimpleCo(const LinOPSimpleCo&);    /** This constructor takes a string containing a label, and three     integers a, b, and c which give the indices of the atoms involved in     the linear angle abc.  The last argument, u, is a unit vector used to     defined the direction perpendicular to the direction in which     distortion is measured.  Atom numbering begins at atom 1, not atom 0. */    LinOPSimpleCo(const char *refr, int, int, int, const SCVector3 &u);    /** The KeyVal constructor.  This calls the        SimpleCo keyval constructor with an integer argument of 3. */    LinOPSimpleCo(const Ref<KeyVal>&);    ~LinOPSimpleCo();    /// Always returns the string "LINIP".    const char * ctype() const;    /// Returns the value of the angle abc in radians.    double radians() const;    /// Returns the value of the angle abc in degrees.    double degrees() const;    /// Returns the value of the angle abc in degrees.    double preferred_value() const;  };typedef LinOPSimpleCo LinOP;}#endif /* _intco_simple_h */// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

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