Example #1
0
def getbasis(atoms,basis_data=None,**opts):
    """\
    bfs = getbasis(atoms,basis_data=None)
    
    Given a Molecule object and a basis library, form a basis set
    constructed as a list of CGBF basis functions objects.
    """
    from PyQuante.Basis.basis import BasisSet
    return BasisSet(atoms, basis_data, **opts)
    # Option to omit f basis functions from imported basis sets
    omit_f = opts.get('omit_f',False)
    if not basis_data:
        from PyQuante.Basis.p631ss import basis_data
    elif type(basis_data) == type(''):
        # Assume this is a name of a basis set, e.g. '6-31g**'
        #  and import dynamically
        basis_data = get_basis_data(basis_data)
    bfs = []
    for atom in atoms:
        bs = basis_data[atom.atno]
        for sym,prims in bs:
            if omit_f and sym == "F": continue
            for power in sym2powerlist[sym]:
                bf = CGBF(atom.pos(),power,atom.atid)
                for expnt,coef in prims:
                    bf.add_primitive(expnt,coef)
                bf.normalize()
                bfs.append(bf)
    return bfs
Example #2
0
def getbasis(atoms, basis_data=None, **opts):
    """\
    bfs = getbasis(atoms,basis_data=None)
    
    Given a Molecule object and a basis library, form a basis set
    constructed as a list of CGBF basis functions objects.
    """
    from PyQuante.Basis.basis import BasisSet
    return BasisSet(atoms, basis_data, **opts)
    # Option to omit f basis functions from imported basis sets
    omit_f = opts.get('omit_f', False)
    if not basis_data:
        from PyQuante.Basis.p631ss import basis_data
    elif type(basis_data) == type(''):
        # Assume this is a name of a basis set, e.g. '6-31g**'
        #  and import dynamically
        basis_data = get_basis_data(basis_data)
    bfs = []
    for atom in atoms:
        bs = basis_data[atom.atno]
        for sym, prims in bs:
            if omit_f and sym == "F": continue
            for power in sym2powerlist[sym]:
                bf = CGBF(atom.pos(), power, atom.atid)
                for expnt, coef in prims:
                    bf.add_primitive(expnt, coef)
                bf.normalize()
                bfs.append(bf)
    return bfs
Example #3
0
def get_overlap(atnoi,i,xyzi,atnoj,j,xyzj):
    bohr2ang = 0.52918
    xyzi = (xyzi[0]/bohr2ang,xyzi[1]/bohr2ang,xyzi[2]/bohr2ang)
    gi = CGBF(xyzi,gauss_powers[i])
    
    zi = gexps[(NQN[atnoi],s_or_p[i])]
    ci = gcoefs[(NQN[atnoi],s_or_p[i])]
    if i:
        zetai = zetap[atnoi]
    else:
        zetai = zetas[atnoi]
    
    xyzj = (xyzj[0]/bohr2ang,xyzj[1]/bohr2ang,xyzj[2]/bohr2ang)
    gj = CGBF(xyzj,gauss_powers[j])
    zj = gexps[(NQN[atnoj],s_or_p[j])]
    cj = gcoefs[(NQN[atnoj],s_or_p[j])]
    if j:
        zetaj = zetap[atnoj]
    else:
        zetaj = zetas[atnoj]

    # Multiply the functions by \zeta^2
    for a in range(6):
        gi.add_primitive(zi[a]*zetai*zetai,ci[a])
        gj.add_primitive(zj[a]*zetaj*zetaj,cj[a])
    gi.normalize()
    gj.normalize()
    return gi.overlap(gj)
Example #4
0
def get_overlap(atnoi,i,xyzi,atnoj,j,xyzj):
    bohr2ang = 0.52918
    xyzi = (xyzi[0]/bohr2ang,xyzi[1]/bohr2ang,xyzi[2]/bohr2ang)
    gi = CGBF(xyzi,gauss_powers[i])
    
    zi = gexps[(NQN[atnoi],s_or_p[i])]
    ci = gcoefs[(NQN[atnoi],s_or_p[i])]
    if i:
        zetai = zetap[atnoi]
    else:
        zetai = zetas[atnoi]
    
    xyzj = (xyzj[0]/bohr2ang,xyzj[1]/bohr2ang,xyzj[2]/bohr2ang)
    gj = CGBF(xyzj,gauss_powers[j])
    zj = gexps[(NQN[atnoj],s_or_p[j])]
    cj = gcoefs[(NQN[atnoj],s_or_p[j])]
    if j:
        zetaj = zetap[atnoj]
    else:
        zetaj = zetas[atnoj]

    # Multiply the functions by \zeta^2
    for a in xrange(6):
        gi.add_primitive(zi[a]*zetai*zetai,ci[a])
        gj.add_primitive(zj[a]*zetaj*zetaj,cj[a])
    gi.normalize()
    gj.normalize()
    return gi.overlap(gj)
Example #5
0
 def gaussian(self):
     a,b,c,d = self.nlm2powers[(self.N,self.L,self.M)]
     cgbf = CGBF(self.origin,(a,b,c))
     expos,coefs = gexps[(self.N,self.L)],gcoefs[(self.N,self.L)]
     zet2 = self.zeta*self.zeta
     for i in range(6):
         cgbf.add_primitive(zet2*expos[i],coefs[i])
     cgbf.normalize()
     return cgbf        
Example #6
0
 def gaussian(self):
     a,b,c,d = self.nlm2powers[(self.N,self.L,self.M)]
     cgbf = CGBF(self.origin,(a,b,c))
     expos,coefs = gexps[(self.N,self.L)],gcoefs[(self.N,self.L)]
     zet2 = self.zeta*self.zeta
     for i in xrange(6):
         cgbf.add_primitive(zet2*expos[i],coefs[i])
     cgbf.normalize()
     return cgbf