home | help
sc::GaussianBasisSet(3) 	      MPQC		 sc::GaussianBasisSet(3)

NAME
     sc::GaussianBasisSet  - The GaussianBasisSet class is used describe a basis
     set composed of atomic gaussian orbitals.

SYNOPSIS
     #include <gaussbas.h>

     Inherits sc::SavableState.

   Classes
     class ValueData
	 This holds scratch data needed to compute basis function values.

   Public Types
     enum UnitType { Unit }
	 This can be given to a CTOR to construct a unit basis function.

   Public Member Functions
     GaussianBasisSet (const Ref< KeyVal > &)
	 The KeyVal constructor.
     GaussianBasisSet (UnitType)
	 This can be given GaussianBasisSet::Unit to construct a basis set  with
	 a single basis function that is one everywhere.
     GaussianBasisSet (StateIn &)
     Ref< GaussianBasisSet > operator+ (const Ref< GaussianBasisSet > &B)
	 Returns  a GaussianBasisSet object that consists of the basis functions
	 for each atom in this followed by the basis functions in B for the cor-
	 responding atom.
     void save_data_state (StateOut &)
	 Save the base classes (with save_data_state) and  the	members  in  the
	 same order that the StateIn CTOR initializes them.
     const char * name () const
	 Return the name of the basis set (is nonnull only if keyword 'name' was
	 provided)
     const char * label () const
	 Return the label of the basis set.
     Ref< Molecule > molecule () const
	 Return the Molecule object.
     Ref< SCMatrixKit > matrixkit ()
	 Returns the SCMatrixKit that is to be used for AO bases.
     Ref< SCMatrixKit > so_matrixkit ()
	 Returns the SCMatrixKit that is to be used for SO bases.
     RefSCDimension basisdim ()
	 Returns the SCDimension object for the dimension.
     int ncenter () const
	 Return the number of centers.
     int nshell () const
	 Return the number of shells.
     int nshell_on_center (int icenter) const
	 Return the number of shells on the given center.
     int shell_on_center (int icenter, int shell) const
	 Return  an overall shell number, given a center and the shell number on
	 that center.
     int shell_to_center (int ishell) const
	 Return the center on which the given shell is located.
     int shell_to_primitive (int ishell) const
	 Return the overall index of the first primitive from the given shell.
     int nbasis () const
	 Return the number of basis functions.
     int nbasis_on_center (int icenter) const
	 Return the number of basis functions on the given center.
     int nprimitive () const
	 Return the number of primitive Gaussians.
     int has_pure () const
	 Return true if basis contains solid harmonics Gaussians.
     int max_nfunction_in_shell () const
	 Return the maximum number of functions that any shell has.
     int max_ncartesian_in_shell (int aminc=0) const
	 Return the maximum number of Cartesian functions that any shell has.
     int max_nprimitive_in_shell () const
	 Return the maximum number of primitive Gaussian that any shell has.
     int max_angular_momentum () const
	 Return the highest angular momentum in any shell.
     int max_ncontraction () const
	 Return the maximum number of Gaussians in a contraction in any shell.
     int max_am_for_contraction (int con) const
	 Return the maximum angular momentum found in the given contraction num-
	 ber for any shell.
     int max_cartesian () const
	 Return the maximum number of Cartesian functions in any shell.
     int shell_to_function (int i) const
	 Return the number of the first function in the given shell.
     int function_to_shell (int i) const
	 Return the shell to which the given function belongs.
     const GaussianShell & operator() (int i) const
	 Return a reference to GaussianShell number i.
     GaussianShell & operator() (int i)
	 Return a reference to GaussianShell number i.
     const GaussianShell & operator[] (int i) const
	 Return a reference to GaussianShell number i.
     GaussianShell & operator[] (int i)
	 Return a reference to GaussianShell number i.
     const GaussianShell & shell (int i) const
	 Return a reference to GaussianShell number i.
     GaussianShell & shell (int i)
	 Return a reference to GaussianShell number i.
     const GaussianShell & operator() (int icenter, int ishell) const
	 Return a reference to GaussianShell number ishell on center icenter.
     GaussianShell & operator() (int icenter, int ishell)
	 Return a reference to GaussianShell number ishell on center icenter.
     const GaussianShell & shell (int i, int j) const
	 Return a reference to GaussianShell number j on center i.
     GaussianShell & shell (int i, int j)
	 Return a reference to GaussianShell number j on center i.
     double r (int icenter, int xyz) const
	 The location of center icenter.
     int values (const SCVector3 &r, ValueData *, double *basis_values) const
	 Compute the values for this basis set at position r.
     int grad_values (const SCVector3 &r, ValueData *, double *g_values,  double
	 *basis_values=0) const
	 Like  values(...), but computes gradients of the basis function values,
	 too.
     int hessian_values (const SCVector3 &r, ValueData *, double *h_values, dou-
	 ble *g_values=0, double *basis_values=0) const
	 Like values(...), but computes first and second derivatives of the  ba-
	 sis function values, too.
     int  shell_values	(const	SCVector3  &r,	int sh, ValueData *, double *ba-
	 sis_values) const
	 Compute the values for the given shell functions at position r.
     int grad_shell_values (const SCVector3 &r,  int  sh,  ValueData  *,  double
	 *g_values, double *basis_values=0) const
	 Like  values(...), but computes gradients of the shell function values,
	 too.
     int hessian_shell_values (const SCVector3 &r, int sh, ValueData  *,  double
	 *h_values, double *g_values=0, double *basis_values=0) const
	 Like  values(...),  but  computes  first  and second derivatives of the
	 shell function values, too.
     int equiv (const Ref< GaussianBasisSet > &b)
	 Returns true if this and the argument are equivalent.
     void print_brief (std::ostream &=ExEnv::out0()) const
	 Print a brief description of the basis set.
     void print (std::ostream &=ExEnv::out0()) const
	 Print a detailed description of the basis set.

     Public Member Functions inherited from sc::SavableState
     SavableState & operator= (const SavableState &)
     void save_state (StateOut &)
	 Save the state of the object as specified by the StateOut object.
     void save_object_state (StateOut &)
	 This can be used for saving state when the exact type of the object  is
	 known for both the save and the restore.
     virtual void save_vbase_state (StateOut &)
	 Save the virtual bases for the object.
     virtual void save_data_state (StateOut &)
	 Save  the  base  classes  (with save_data_state) and the members in the
	 same order that the StateIn CTOR initializes them.

     Public Member Functions inherited from sc::DescribedClass
     DescribedClass (const DescribedClass &)
     DescribedClass & operator= (const DescribedClass &)
     ClassDesc * class_desc () const  throw ()
	 This returns the unique pointer to the ClassDesc corresponding  to  the
	 given type_info object.
     const char * class_name () const
	 Return the name of the object's exact type.
     int class_version () const
	 Return the version of the class.
     virtual void print (std::ostream &=ExEnv::out0()) const
	 Print the object.

     Public Member Functions inherited from sc::RefCount
     int lock_ptr () const
	 Lock this object.
     int unlock_ptr () const
	 Unlock this object.
     void use_locks (bool inVal)
	 start and stop using locks on this object
     refcount_t nreference () const
	 Return the reference count.
     refcount_t reference ()
	 Increment the reference count and return the new count.
     refcount_t dereference ()
	 Decrement the reference count and return the new count.
     int managed () const
     void unmanage ()
	 Turn off the reference counting mechanism for this object.
     int managed () const
	 Return 1 if the object is managed. Otherwise return 0.

     Public Member Functions inherited from sc::Identity
     Identifier identifier ()
	 Return the Identifier for this argument.

   Protected Member Functions
     GaussianBasisSet (const GaussianBasisSet &)
     virtual void set_matrixkit (const Ref< SCMatrixKit > &)

     Protected Member Functions inherited from sc::SavableState
     SavableState (const SavableState &)
     SavableState (StateIn &)
	 Each  derived	class  StateIn CTOR handles the restore corresponding to
	 calling save_object_state, save_vbase_state, and save_data_state listed
	 above.

     Protected Member Functions inherited from sc::RefCount
     RefCount (const RefCount &)
     RefCount & operator= (const RefCount &)

   Additional Inherited Members
     Static Public Member Functions inherited from sc::SavableState
     static void save_state (SavableState *s, StateOut &)
     static SavableState * restore_state (StateIn &si)
	 Restores objects saved with save_state.
     static SavableState * key_restore_state (StateIn &si, const char *keyword)
	 Like restore_state, but  keyword  is  used  to  override  values  while
	 restoring.
     static  SavableState  * dir_restore_state (StateIn &si, const char *object-
	 name, const char *keyword=0)

Detailed Description
     The GaussianBasisSet class is used describe a basis set composed of  atomic
     gaussian orbitals.

     Inputs  for  common  basis sets are included in the MPQC distribution. They
     have been obtained from the EMSL Basis Set Database and translated into the
     MPQC format. The citation for this database is below. The	technical  cita-
     tion  for	each basis set is listed in the individual basis set data files,
     in MPQC's lib/basis directory.

     Following is a table with available basis sets listing the  supported  ele-
     ments  for each basis and the number of basis functions for H, $n_0$, first
     row, $n_1$, and second row, $n_2$, atoms. Basis sets with non-alpha-numeri-
     cal characters in their name must be given in quotes.

     Basis  SetElements$n_0$$n_1$$n_2$	STO-2GH-Ca159  STO-3GH-Kr159   STO-3G*H-
     Ar1514 STO-6GH-Kr159 MINI (Huzinaga)H-Ca159 MINI (Scaled)H-Ca159 MIDI (Huz-
     inaga)H-Na,  Al-K2913  DZ	(Dunning)H, Li, B-Ne, Al-Cl21018 DZP (Dunning)H,
     Li,  B-Ne,  Al-Cl51624  DZP  +  Diffuse  (Dunning)H,   B-Ne6193-21GH-Kr2913
     3-21G*H-Ar2919   3-21++GH-Ar31317	 3-21++G*H-Ar31323  4-31GH-Ne,	P-Cl2913
     6-31GH-Zn2913 6-31G*H-Zn21519 6-31G**H-Zn51519  6-31+G*H-Ar21923  6-31++GH-
     Ca31317   6-31++G*H-Ar31923   6-31++G**H-Ar61923	6-311GH-Ca,   Ga-Kr31321
     6-311G*H-Ca, Ga-Kr31826 6-311G**H-Ca,  Ga-Kr61826	6-311G(2df,2pd)H-Ne,  K,
     Ca14306-311++G**H-Ne7226-311++G(2d,2p)H-Ca102735	     6-311++G(3df,3pd)H-
     Ar183947 cc-pVDZH-Ar, Ca, Ga-Kr51418 cc-pVTZH-Ar, Ca, Ga-Kr143034 cc-pVQZH-
     Ar, Ca, Ga-Kr305559 cc-pV5ZH-Ar, Ca, Ga-Kr559195 cc-pV6ZH,  He,  B-Ne,  Al-
     Ar91140144  aug-cc-pVDZH,	He, B-Ne, Al-Ar, Ga-Kr92327 aug-cc-pVTZH, He, B-
     Ne, Al-Ar, Ga-Kr234650 aug-cc-pVQZH, He, B-Ne, Al-Ar,  Ga-Kr468084  aug-cc-
     pV5ZH,   He,   B-Ne,  Al-Ar,  Ga-Kr80127131  aug-cc-pV6ZH,  He,  B-Ne,  Al-
     Ar127189193 cc-pCVDZLi, B-Ar1827 cc-pCVTZLi, B-Ar4359 cc-pCVQZLi, B-Ar84109
     cc-pCV5ZB-Ne145aug-cc-pCVDZB-F, Al-Ar2736 aug-cc-pCVTZB-Ne, Al-Ar5975  aug-
     cc-pCVQZB-Ne,  Al-Ar109134  aug-cc-pCV5ZB-F181NASA  Ames ANOH, B-Ne, Al, P,
     Ti, Fe, Ni305559 pc-0H, C-F, Si-Cl2913 pc-1H, C-F, Si-Cl51418  pc-2H,  C-F,
     Si-Cl143034 pc-3H, C-F, Si-Cl346464 pc-4H, C-F, Si-Cl63109105 pc-0-augH, C-
     F,  Si-Cl31317  pc-1-augH,  C-F,  Si-Cl92327  pc-2-augH,  C-F,  Si-Cl234650
     pc-3-augH, C-F, Si-Cl508989 pc-4-augH, C-F, Si-Cl88145141

     All basis sets except for the pc-n and pc-n-aug basis  sets  were	obtained
     from the Extensible Computational Chemistry Environment Basis Set Database,
     Version  12/03/03,  as  developed	and distributed by the Molecular Science
     Computing Facility, Environmental and Molecular Sciences  Laboratory  which
     is  part of the Pacific Northwest Laboratory, P.O. Box 999, Richland, Wash-
     ington 99352, USA, and funded by the U.S. Department of Energy. The Pacific
     Northwest Laboratory is a multi-program  laboratory  operated  by	Battelle
     Memorial  Institute  for  the  U.S. Department of Energy under contract DE-
     AC06-76RLO 1830. Contact David Feller or Karen Schuchardt for  further  in-
     formation.

     The pc-n and pc-n-aug basis sets are the polarization consistent basis sets
     of  Frank	Jensen.  See  J. Chem. Phys. 115 (2001) 9113; J. Chem. Phys. 116
     (2002) 7372; J. Chem. Phys. 117 (2002) 9234; and J. Chem. Phys. 121  (2004)
     3463.

Constructor & Destructor Documentation
   sc::GaussianBasisSet::GaussianBasisSet (const Ref< KeyVal > &)
     The KeyVal constructor.

     molecule
	 The gives a Molecule object. The is no default.

     puream
	 If  this boolean parameter is true then 5D, 7F, etc. will be used. Oth-
	 erwise all cartesian functions will be used. The default depends on the
	 particular basis set.

     name
	 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 nec-
	 essary to put the name in double quotes. There is no default.

     basis
	 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.

     element
	 This is a vector of elements. If it is given then it must have the same
	 number of entries as the basis vector.

     basisdir
	 A  string  giving  a  directory  where  basis	set data files are to be
	 sought. See the text below for a complete description of what	directo-
	 ries are consulted.

     basisfiles
	 Each keyword in this vector of files is appended to the directory spec-
	 ified with basisdir and basis set data is read from them.

     matrixkit
	 Specifies  a  SCMatrixKit  object.  It is usually not necessary to give
	 this keyword, as the default action should get the correct SCMatrixKit.

     Several files in various directories are checked for basis set data. First,
     basis sets can be given by the user in the basis section at the  top  level
     of the main input file. Next, if a path is given with the basisdir keyword,
     then  all	of the files given with the basisfiles keyword are read in after
     appending their names to the value of basisdir. Basis sets can be given  in
     these files in the basis section at the top level as well. If the named ba-
     sis  set  still cannot be found, then GaussianBasisSet will try convert the
     basis set name to a file name and check first in the directory given by ba-
     sisdir. Next it checks for the environment variable SCLIBDIR. If it is  set
     it  will look for the basis file in $SCLIBDIR/basis. Otherwise it will look
     in the source code distribution in the directory SC/lib/basis. If the  exe-
     cutable  has  changed machines or the source code has be moved, then it may
     be necessary to copy the library files to your machine and set the SCLIBDIR
     environmental variable.

     The basis set itself is also given in the ParsedKeyVal  format.  There  are
     two recognized formats for basis sets:

     array of shells
	 One  must  specify the keyword :basis: followed by the lowercase atomic
	 name followed by : followed by the basis set name (which may need to be
	 placed inside double quotes). The value for the keyword is an array  of
	 shells. Each shell reads the following keywords:

     type
	 This  is a vector that describes each component of this shell. For each
	 element the following two keywords are read:

     am  The angular momentum of the component. This can be given as the  letter
	 designation, s, p, d, etc. There is no default.

     puream
	 If  this  boolean  parameter is true then 5D, 7F, etc. shells are used.
	 The default is false. This parameter can be overridden in the Gaussian-
	 BasisSet specification.

     exp This is a vector giving the exponents of the primitive  Gaussian  func-
	 tions.

     coef
	 This  is a matrix giving the coeffients of the primitive Gaussian func-
	 tions. The first index gives the component number of the shell and  the
	 second gives the primitive number.

	 An  example  might  be easier to understand. This is a basis set speci-
	 ficition for STO-2G carbon:

     basis: (
      carbon: 'STO-2G': [
       (type: [(am = s)]
	{      exp	coef:0 } = {
	   27.38503303 0.43012850
	    4.87452205 0.67891353
	})
       (type: [(am = p) (am = s)]
	{     exp      coef:1	  coef:0 } = {
	    1.13674819 0.04947177 0.51154071
	    0.28830936 0.96378241 0.61281990
	})
      ]
     )

     basis set of even-tempered primitive Gaussians
	 Such basis set format is given as a group of keywords. The name of  the
	 group	is  :basis:  followed by the lowercase atomic name followed by :
	 followed by the basis set name (which may need to be placed inside dou-
	 ble quotes). The group of keywords must contain vectors am  and  nprim,
	 which	specify  the  angular  momentum and the number of shells in each
	 block of even-tempered primitives. In addition, one  must  provide  any
	 two of the following vectors:

     first_exp
	 The exponent of the 'tightest' primitive Gaussian in the block.

     last_exp
	 The exponent of the most 'diffuse' primitive Gaussian in the block.

     exp_ratio
	 The ratio of exponents of consecutive primitive Gaussians in the block.

	 Note that the dimensions of each vector must be the same.

     Here's  an  example of a basis set composed of 2 blocks of even-tempered s-
     functions and 1 block of even-tempered p-functions.

     basis: (
      neon: '20s5s13p':(

	am = [ 0 0 1 ]
	nprim = [ 20 5 13 ]
	first_exp = [ 1000.0 0.1  70.0 ]
	last_exp =  [	 1.0 0.01  0.1 ]

      )
     )

   sc::GaussianBasisSet::GaussianBasisSet (UnitType)
     This can be given GaussianBasisSet::Unit to construct a basis  set  with  a
     single  basis  function that is one everywhere. This can be used with inte-
     gral evaluators to compute certain classes of integrals, with limitations.

Member Function Documentation
   int sc::GaussianBasisSet::grad_shell_values (const SCVector3  &  r,	int  sh,
     ValueData *, double * g_values, double * basis_values = 0) const
     Like values(...), but computes gradients of the shell function values, too.
     See the other grad_values(...) members for more information.

   int sc::GaussianBasisSet::grad_values (const SCVector3 & r, ValueData *, dou-
     ble * g_values, double * basis_values = 0) const
     Like values(...), but computes gradients of the basis function values, too.
     The  g_values  argument must be vector of length 3*nbasis. The data will be
     written in the order bf1_x, bf1_y, bf1_z, ...

   int sc::GaussianBasisSet::hessian_shell_values (const SCVector3 & r, int  sh,
     ValueData	*, double * h_values, double * g_values = 0, double * basis_val-
     ues = 0) const
     Like values(...), but computes first and second derivatives  of  the  shell
     function  values,	too.  See the other hessian_values(...) members for more
     information.

   int sc::GaussianBasisSet::hessian_values (const SCVector3 & r,  ValueData  *,
     double * h_values, double * g_values = 0, double * basis_values = 0) const
     Like  values(...),  but  computes first and second derivatives of the basis
     function values, too. h_values must be vector of length 6*nbasis. The  data
     will  be  written	in  the  order	bf1_xx,  bf1_yx, bf1_yy, bf1_zx, bf1_zy,
     bf1_zz, ...

   const char * sc::GaussianBasisSet::label () const [inline]
     Return the label of the basis set. label() return the same string as name()
     if keyword 'name' was provided, otherwise it is a unique descriptive string
     which can be arbitrarily long.

     References name().

   int sc::GaussianBasisSet::max_am_for_contraction (int con) const
     Return the maximum angular momentum found in the given  contraction  number
     for any shell.

   int sc::GaussianBasisSet::max_ncartesian_in_shell (int aminc = 0) const
     Return  the  maximum  number of Cartesian functions that any shell has. The
     optional argument is an angular momentum increment.

   Ref< GaussianBasisSet > sc::GaussianBasisSet::operator+ (const Ref< Gaussian-
     BasisSet > & B)
     Returns a GaussianBasisSet object that consists of the basis functions  for
     each  atom in this followed by the basis functions in B for the correspond-
     ing atom. The Molecule object for the two basis sets must be identical.

   void sc::GaussianBasisSet::print (std::ostream & = ExEnv::out0()) const [vir-
     tual]
     Print a detailed description of the basis set.

     Reimplemented from sc::DescribedClass.

   double sc::GaussianBasisSet::r (int icenter, int xyz) const
     The location of center icenter. The xyz argument is 0 for x, 1 for y, and 2
     for z.

   void sc::GaussianBasisSet::save_data_state (StateOut &) [virtual]
     Save the base classes (with save_data_state) and the members  in  the  same
     order  that  the StateIn CTOR initializes them. This must be implemented by
     the derived class if the class has data.

     Reimplemented from sc::SavableState.

   int sc::GaussianBasisSet::shell_values (const SCVector3 & r, int  sh,  Value-
     Data *, double * basis_values) const
     Compute  the  values  for	the given shell functions at position r. See the
     other values(...) members for more information.

   int sc::GaussianBasisSet::values (const SCVector3 & r, ValueData *, double  *
     basis_values) const
     Compute the values for this basis set at position r. The basis_values argu-
     ment must be vector of length nbasis.

Author
     Generated automatically by Doxygen for MPQC from the source code.

Version 2.3.1			 Thu Sep 3 2026 	 sc::GaussianBasisSet(3)

home | help