Exemple #1
0
    def test_str(self):
        bt = triangular((2, 1))
        self.assertEqual(
            str(bt),
            """
Block 1

    0.00000000
    0.00000000    0.00000000

Block 2

    0.00000000
""",
        )
Exemple #2
0
 def fv(self):
     """Get active Fock matrix"""
     if self._fv is None:
         with FortranBinary(self.name) as fb:
             fb.find(self.ifclabel)
             for i in range(9):
                 fb.next()
             mmorbt = max(self.nnorbt, 4)
             dbl = fb.readbuf(mmorbt, self.FLOAT)
         self._fv = blocked.triangular(self.norb)
         n = 0
         for isym in range(8):
             ij = 0
             for i in range(self.norb[isym]):
                 for j in range(i + 1):
                     self._fv.subblock[isym][i, j] = dbl[ij]
                     ij += 1
             n += ij
         assert n == self.nnorbt
     return self._fv
Exemple #3
0
def read(label="OVERLAP", filename="AOONEINT"):
    """Read integral for label"""
    lbuf = 600
    #
    # Initialize
    #
    unlabeled = readhead(filename)
    nsym = unlabeled["nsym"]
    nbas = unlabeled["naos"]
    INT = unlabeled["int_fmt"]
    FLOAT = unlabeled["float_fmt"]
    nnbast = 0
    for nbasi in nbas:
        nnbast += nbasi * (nbasi + 1) // 2
    s = full.matrix((nnbast, ))
    #
    # Open file, locate label
    #
    aooneint = FortranBinary(filename)
    aooneint.find(label)
    #
    # Loop over records
    #

    for rec in aooneint:
        buf = rec.read(lbuf, FLOAT)
        ibuf = rec.read(lbuf, INT)
        length, = rec.read(1, INT)
        if length < 0:
            break
        for i, b in zip(ibuf[:length], buf[:length]):
            s[i - 1] = b

    _S = blocked.triangular(nbas)
    off = 0
    for isym in range(nsym):
        nbasi = nbas[isym] * (nbas[isym] + 1) // 2
        _S.subblock[isym] = np.array(s[off:off + nbasi]).view(full.triangular)
        off += nbasi
    # aooneint.close()
    return _S
Exemple #4
0
def read(label="OVERLAP", filename="AOONEINT"):
    """Read integral for label"""
    lbuf = 600
    #
    # Initialize
    #
    unlabeled = readhead(filename)
    nsym = unlabeled["nsym"]
    nbas = unlabeled["naos"]
    INT = unlabeled["int_fmt"]
    FLOAT = unlabeled["float_fmt"]
    nnbast = 0
    for nbasi in nbas:
        nnbast += nbasi*(nbasi+1)/2
    s = full.matrix((nnbast,))
    #
    # Open file, locate label
    #
    aooneint = unformatted.FortranBinary(filename)
    labinfo = aooneint.find(label)
    #
    # Loop over records
    #

    for rec in aooneint:
       buf = rec.read(lbuf, FLOAT)
       ibuf = rec.read(lbuf, INT)
       length, = rec.read(1, INT)
       if length < 0: break
       for i, b in zip(ibuf[:length], buf[:length]):
           s[i-1] = b

    _S = blocked.triangular(nbas)
    off = 0
    for isym in range(nsym):
        nbasi = nbas[isym]*(nbas[isym]+1)/2
        _S.subblock[isym] = np.array(s[off:off+nbasi]).view(full.triangular)
        off += nbasi
    #aooneint.close()
    return _S
Exemple #5
0
 def test_blocked_random(self, mock_random):
     triangular([3, 2]).random()
     self.assertTrue(mock_random.calls, 2)