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

📄 gaussbas.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
📖 第 1 页 / 共 2 页
字号:
//// gaussbas.h//// Copyright (C) 1996 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#ifndef _chemistry_qc_basis_gaussbas_h#define _chemistry_qc_basis_gaussbas_h#ifdef __GNUC__#pragma interface#endif#include <vector>#include <iostream>#include <util/state/state.h>#include <util/keyval/keyval.h>#include <math/scmat/matrix.h>#include <math/scmat/vector3.h>#include <chemistry/molecule/molecule.h>namespace sc {class GaussianShell;class BasisFileSet;class Integral;class CartesianIter;class SphericalTransformIter;/** The GaussianBasisSet class is used describe a basis set composed ofatomic gaussian orbitals.Following is a table with available basis sets listing the supportedelements for each basis and the number of basis functions for H, \f$n_0\f$,first row, \f$n_1\f$, and second row, \f$n_2\f$, atoms.  Basis sets withnon-alpha-numerical characters in their name must be given in quotes.<table><tr><td>Basis Set<td>Elements<td>\f$n_0\f$<td>\f$n_1\f$<td>\f$n_2\f$<tr><td><tt>STO-2G</tt><td>H-Ca<td>1<td>5<td>9<tr><td><tt>STO-3G</tt><td>H-Kr<td>1<td>5<td>9<tr><td><tt>STO-3G*</tt><td>H-Ar<td>1<td>5<td>14<tr><td><tt>STO-6G</tt><td>H-Be, C-Kr<td>1<td>5<td>9<tr><td><tt>MINI (Huzinaga)</tt><td>H-Ca<td>1<td>5<td>9<tr><td><tt>MINI (Scaled)</tt><td>H-Ca<td>1<td>5<td>9<tr><td><tt>MIDI (Huzinaga)</tt><td>H-Na<td>2<td>9<td><tr><td><tt>DZ (Dunning)</tt><td>H, Li, B-Ne, Al-Cl<td>2<td>10<td>18<tr><td><tt>DZP (Dunning)</tt><td>H, Li, B-Ne, Al-Cl<td>5<td>16<td>24<tr><td><tt>DZP + Diffuse (Dunning)</tt><td>H, B-Ne<td>6<td>19<td><tr><td><tt>3-21G</tt><td>H-Kr<td>2<td>9<td>13<tr><td><tt>3-21G*</tt><td>H-Ar<td>2<td>9<td>19<tr><td><tt>3-21++G</tt><td>H-Ar<td>3<td>13<td>17<tr><td><tt>3-21++G*</tt><td>H-Ar<td>3<td>13<td>23<tr><td><tt>4-31G</tt><td>H-Ne, P-Cl<td>2<td>9<td>13<tr><td><tt>4-31G*</tt><td>H-Ne, P-Cl<td>2<td>15<td>19<tr><td><tt>4-31G**</tt><td>H-Ne, P-Cl<td>5<td>15<td>19<tr><td><tt>6-31G</tt><td>H-Ar<td>2<td>9<td>13<tr><td><tt>6-31G*</tt><td>H-Ar<td>2<td>15<td>19<tr><td><tt>6-31G**</tt><td>H-Ar<td>5<td>15<td>19<tr><td><tt>6-31+G*</tt><td>H-Ar<td>2<td>19<td>23<tr><td><tt>6-31++G</tt><td>H-Ar<td>3<td>13<td>17<tr><td><tt>6-31++G*</tt><td>H-Ar<td>3<td>19<td>23<tr><td><tt>6-31++G**</tt><td>H-Ar<td>6<td>19<td>23<tr><td><tt>6-311G</tt><td>H-Ar, Ga-Kr<td>3<td>13<td>21<tr><td><tt>6-311G*</tt><td>H-Ar, Ga-Kr<td>3<td>18<td>26<tr><td><tt>6-311G**</tt><td>H-Ar, Ga-Kr<td>6<td>18<td>26<tr><td><tt>6-311G(2df,2pd)</tt><td>H-Ne<td>14<td>30<td><tr><td><tt>6-311++G**</tt><td>H-Ne<td>7<td>23<td><tr><td><tt>6-311++G(2d,2p)</tt><td>H-Ne<td>10<td>29<td><tr><td><tt>6-311++G(3df,3pd)</tt><td>H-Ar<td>19<td>42<td>50<tr><td><tt>cc-pVDZ</tt><td>H, He, B-Ne, Al-Ar, Ga-Kr<td>5<td>14<td>18<tr><td><tt>cc-pVTZ</tt><td>H, He, B-Ne, Al-Ar, Ga-Se<td>14<td>30<td>34<tr><td><tt>cc-pVQZ</tt><td>H, He, B-Ne, Al-Ar<td>30<td>55<td>59<tr><td><tt>cc-pV5Z</tt><td>H-Ne, Al-Ar<td>55<td>91<td>95<tr><td><tt>aug-cc-pVDZ</tt><td>H, He, B-Ne, Al-Ar<td>9<td>23<td>27<tr><td><tt>aug-cc-pVTZ</tt><td>H, He, B-Ne, Al-Ar<td>23<td>46<td>50<tr><td><tt>aug-cc-pVQZ</tt><td>H, He, B-Ne, Al-Ar<td>46<td>80<td>84<tr><td><tt>aug-cc-pV5Z</tt><td>H, He, B-Ne, Al-Ar<td>80<td>127<td>131<tr><td><tt>cc-pCVDZ</tt><td>B-Ne<td><td>18<td><tr><td><tt>cc-pCVTZ</tt><td>B-Ne<td><td>43<td><tr><td><tt>cc-pCVQZ</tt><td>B-Ne<td><td>84<td><tr><td><tt>cc-pCV5Z</tt><td>B-Ne<td><td>145<td><tr><td><tt>aug-cc-pCVDZ</tt><td>B-F<td><td>27<td><tr><td><tt>aug-cc-pCVTZ</tt><td>B-Ne<td><td>59<td><tr><td><tt>aug-cc-pCVQZ</tt><td>B-Ne<td><td>109<td><tr><td><tt>aug-cc-pCV5Z</tt><td>B-F<td><td>181<td><tr><td><tt>NASA Ames ANO</tt><td>H, B-Ne, Al, P, Ti, Fe, Ni<td>30<td>55<td>59</table>*/class GaussianBasisSet: public SavableState{  private:    char* name_;    GaussianShell** shell_;    std::vector<int> shell_to_function_;    std::vector<int> function_to_shell_;    Ref<Molecule> molecule_;    Ref<SCMatrixKit> matrixkit_;    Ref<SCMatrixKit> so_matrixkit_;    RefSCDimension basisdim_;    int ncenter_;    std::vector<int> shell_to_center_;    std::vector<int> shell_to_primitive_;    std::vector<int> center_to_shell_;    std::vector<int> center_to_nshell_;    std::vector<int> center_to_nbasis_;    int nshell_;    int nbasis_;    int nprim_;    void recursively_get_shell(int&,Ref<KeyVal>&,                               const char*,const char*,BasisFileSet&,                               int,int,int);    void init(Ref<Molecule>&,Ref<KeyVal>&,              BasisFileSet&,              int have_userkeyval,              int pure);    void init2(int skip_ghosts=0);      protected:    GaussianBasisSet(const GaussianBasisSet&);    virtual void set_matrixkit(const Ref<SCMatrixKit>&);      public:    /** This holds scratch data needed to compute basis function values. */    class ValueData {      protected:        CartesianIter **civec_;        SphericalTransformIter **sivec_;        int maxam_;      public:        ValueData(const Ref<GaussianBasisSet> &, const Ref<Integral> &);        ~ValueData();        CartesianIter **civec() { return civec_; }        SphericalTransformIter **sivec() { return sivec_; }    };    /** The KeyVal constructor.        <dl>        <dt><tt>molecule</tt><dd> The gives a Molecule object.  The is no        default.        <dt><tt>puream</tt><dd> If this boolean parameter is true then 5D,        7F, etc. will be used.  Otherwise all cartesian functions will be        used.  The default depends on the particular basis set.        <dt><tt>name</tt><dd> This is a string giving the name of the basis        set.  The above table of basis sets gives some of the recognized        basis set names.  It may be necessary to put the name in double        quotes. There is no default.        <dt><tt>basis</tt><dd> This is a vector of basis set names that can        give a different basis set to each atom in the molecule.  If the        element vector is given, then it gives different basis sets to        different elements.  The default is to give every atom the basis        set specified in name.        <dt><tt>element</tt><dd> This is a vector of elements.  If it is        given then it must have the same number of entries as the basis        vector.        <dt><tt>basisdir</tt><dd> A string giving a directory where basis        set data files are to be sought.  See the text below for a complete        description of what directors are consulted.        <dt><tt>basisfiles</tt><dd> Each keyword in this vector of files is        appended to the directory specified with basisdir and basis set        data is read from them.        <dt><tt>matrixkit</tt><dd> Specifies a SCMatrixKit object.  It is        usually not necessary to give this keyword, as the default action        should get the correct SCMatrixKit.        </dl>

⌨️ 快捷键说明

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