예제 #1
0
import numpy as np
import sys, os
from pbc import PBC

# Initialize periodic boundry condition object
pbc_i = PBC()

# Print lattice vectors
pbc_i.print_basis()


npos_i = []
npos_i.append(np.array([25.0, 25.0, 25.0], dtype="float64"))
npos_i.append(np.array([5.0, 75.0, 25.0], dtype="float64"))
npos_j = []
npos_j.append(np.array([-10.0, -15.0, 0.0], dtype="float64"))
npos_j.append(np.array([-25.0, -90.0, -45.0], dtype="float64"))
npos_ij, nd_ij = pbc_i.delta_npos(npos_i, npos_j)

for n in range(len(npos_i)):
    pos_i = npos_i[n]
    print " pos_i %d  [ %f %f %f ] \n" % (n + 1, pos_i[0], pos_i[1], pos_i[2])
for n in range(len(npos_j)):
    pos_j = npos_j[n]
    print " pos_j %d  [ %f %f %f ]  \n" % (n + 1, pos_j[0], pos_j[1], pos_j[2])

for n in range(len(npos_i)):
    for m in range(len(npos_j)):
        pos_ij = npos_ij[n][m]
        print " pos_ij %d %d [ %f %f %f ] | %f | \n" % (n + 1, m + 1, pos_ij[0], pos_ij[1], pos_ij[2], nd_ij[n][m])
예제 #2
0
파일: tests.py 프로젝트: traviskemper/pbcs
def main():

    print out_line

    mod_name = "pbc"
    term_width=80
    orig_stdout = sys.stdout

    test_list = []

    command='import numpy as np'
    tag='importnumpy'
    rshift=len(tag)+len(command)
    try:
        import numpy as np
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])

    command='from pbc import PBC'
    tag='importPBC'
    rshift=len(tag)+len(command)
    try:
        from pbc import PBC
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])

    command='pbc_i = PBC'
    tag='intializePBC'
    rshift=len(tag)+len(command)
    try:
        pbc_i = PBC()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])



    command='pbc_i.return_basis()'
    tag='return_basis_2'
    rshift=len(tag)+len(command)
    try:
        basis_i = pbc_i.return_basis()
        f = open('%s.test'%(tag), 'w')
        for i in range(pbc_i.lat.d):
            for j in range(pbc_i.lat.d):
                f.write(" basis_i [%d][%d] = %g  \n"%(i,j,basis_i[i][j]))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.set_basis()'
    tag='set_basis_1'
    rshift=len(tag)+len(command)
    try:
        basis_i = pbc_i.return_basis()
        f = open('%s.test'%(tag), 'w')
        for i in range(pbc_i.lat.d):
            for j in range(pbc_i.lat.d):
                f.write(" basis_o [%d][%d] = %g  \n"%(i,j,basis_i[i][j]))
        basis_i[0,0]=150.0
        basis_i[1,1]=150.0
        basis_i[2,2]=150.0
        pbc_i.set_basis(basis_i)
        for i in range(pbc_i.lat.d):
            for j in range(pbc_i.lat.d):
                f.write(" basis_i [%d][%d] = %g  \n"%(i,j,basis_i[i][j]))
        f.write(" a  = %g  \n"%(pbc_i.lat.a))
        f.write(" b  = %g  \n"%(pbc_i.lat.b))
        f.write(" c  = %g  \n"%(pbc_i.lat.c))
        f.write(" alpha  = %g  \n"%(pbc_i.lat.alpha))
        f.write(" gamma  = %g  \n"%(pbc_i.lat.gamma))
        f.write(" beta  = %g  \n"%(pbc_i.lat.beta))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.find_Bravais()'
    tag='find_Bravais_1'
    rshift=len(tag)+len(command)
    try:
        Bravais_numb = pbc_i.find_Bravais()
        Bravais_type = pbc_i.return_Bravais()
        f = open('%s.test'%(tag), 'w')
        f.write(" Bravais  %s [%d]  \n"%(Bravais_type,Bravais_numb))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.delta_npos()'
    tag='delta_npos_1'
    rshift=len(tag)+len(command)
    try:

        npos_i = []
        npos_i.append(np.array([75.0,95.0,15.0], dtype='float64'))
        npos_i.append(np.array([-85.0,75.0,25.0], dtype='float64'))
        npos_i.append(np.array([-96.0,-68.0,33.0], dtype='float64'))
        npos_i.append(np.array([-85.0,-38.0,-78.0], dtype='float64'))
        npos_j = []
        npos_j.append(np.array([-101.0,-152.0,-45.0], dtype='float64'))
        npos_j.append(np.array([-64.0,-32.0,131.0], dtype='float64'))
        npos_j.append(np.array([-48.0,377.0,77.0], dtype='float64'))
        npos_j.append(np.array([12.0,152.0,45.0], dtype='float64'))
        npos_ij,nd_ij = pbc_i.delta_npos(npos_i,npos_j)

        f = open('%s.test'%(tag), 'w')
        for n in range(len(npos_i)):
            pos_i = npos_i[n]
            f.write(" pos_i %d  [ %f %f %f ] \n"%(n+1,pos_i[0],pos_i[1],pos_i[2]))
        for n in range(len(npos_j)):
            pos_j = npos_j[n]
            f.write(" pos_j %d  [ %f %f %f ]  \n"%(n+1,pos_j[0],pos_j[1],pos_j[2]))

        for n in range(len(npos_i)):
            for m in range(len(npos_j)):
                pos_ij = npos_ij[n][m]
                f.write(" pos_ij %d %d [ %f %f %f ] | %f | \n"%(n+1,m+1,pos_ij[0],pos_ij[1],pos_ij[2],nd_ij[n][m]))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.set_basis()'
    tag='set_basis_2'
    rshift=len(tag)+len(command)
    try:

        basis_i = pbc_i.return_basis()
        f = open('%s.test'%(tag), 'w')
        for n in range(3):
            f.write(" Basis_o %d  [ %f %f %f ] \n"%(n+1,basis_i[n,0],basis_i[n,1],basis_i[n,2]))
        # Set local basis to new values
        basis_i[0,0]=120.0
        basis_i[1,1]=110.0
        basis_i[2,2]=130.0

        # Set lattice vectors to new values 
        pbc_i.set_basis(basis_i)
        for n in range(3):
            f.write(" Basis_i %d  [ %f %f %f ] \n"%(n+1,basis_i[n,0],basis_i[n,1],basis_i[n,2]))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.delta_npos()'
    tag='delta_npos_2'
    rshift=len(tag)+len(command)
    try:
        basis_i = pbc_i.return_basis()

        npos_i = []
        npos_i.append(np.array([75.0,95.0,15.0], dtype='float64'))
        npos_i.append(np.array([-85.0,75.0,25.0], dtype='float64'))
        npos_i.append(np.array([-96.0,-68.0,33.0], dtype='float64'))
        npos_i.append(np.array([-85.0,-38.0,-78.0], dtype='float64'))
        npos_j = []
        npos_j.append(np.array([-101.0,-152.0,-45.0], dtype='float64'))
        npos_j.append(np.array([-64.0,-32.0,131.0], dtype='float64'))
        npos_j.append(np.array([-48.0,377.0,77.0], dtype='float64'))
        npos_j.append(np.array([12.0,152.0,45.0], dtype='float64'))
        npos_ij,nd_ij = pbc_i.delta_npos(npos_i,npos_j)

        f = open('%s.test'%(tag), 'w')
        for n in range(3):
            f.write(" Basis_o %d  [ %f %f %f ] \n"%(n+1,basis_i[n,0],basis_i[n,1],basis_i[n,2]))        
        for n in range(len(npos_i)):
            pos_i = npos_i[n]
            f.write(" pos_i %d  [ %f %f %f ] \n"%(n+1,pos_i[0],pos_i[1],pos_i[2]))
        for n in range(len(npos_j)):
            pos_j = npos_j[n]
            f.write(" pos_j %d  [ %f %f %f ]  \n"%(n+1,pos_j[0],pos_j[1],pos_j[2]))

        for n in range(len(npos_i)):
            for m in range(len(npos_j)):
                pos_ij = npos_ij[n][m]
                f.write(" pos_ij %d %d [ %f %f %f ] | %f | \n"%(n+1,m+1,pos_ij[0],pos_ij[1],pos_ij[2],nd_ij[n][m]))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])


    command='pbc_i.delta_npos()'
    tag='delta_npos_3'
    rshift=len(tag)+len(command)
    try:
        basis_i = pbc_i.return_basis()

        npos_i = []
        npos_i.append(np.array([75.0,95.0,15.0], dtype='float64'))
        npos_i.append(np.array([-85.0,75.0,25.0], dtype='float64'))
        npos_i.append(np.array([-96.0,-68.0,33.0], dtype='float64'))
        npos_i.append(np.array([-85.0,-38.0,-78.0], dtype='float64'))
        npos_j = npos_i
        npos_ij,nd_ij = pbc_i.delta_npos(npos_i,npos_j)

        f = open('%s.test'%(tag), 'w')
        for n in range(3):
            f.write(" Basis_o %d  [ %f %f %f ] \n"%(n+1,basis_i[n,0],basis_i[n,1],basis_i[n,2]))        
        for n in range(len(npos_i)):
            pos_i = npos_i[n]
            f.write(" pos_i %d  [ %f %f %f ] \n"%(n+1,pos_i[0],pos_i[1],pos_i[2]))
        for n in range(len(npos_j)):
            pos_j = npos_j[n]
            f.write(" pos_j %d  [ %f %f %f ]  \n"%(n+1,pos_j[0],pos_j[1],pos_j[2]))

        for n in range(len(npos_i)):
            for m in range(len(npos_j)):
                pos_ij = npos_ij[n][m]
                f.write(" pos_ij %d %d [ %f %f %f ] | %f | \n"%(n+1,m+1,pos_ij[0],pos_ij[1],pos_ij[2],nd_ij[n][m]))
        f.close()
        status='[PASSED]'.rjust(term_width-rshift)
    except:
        status='[FAILED]'.rjust(term_width-rshift)
    if( os.system("diff %s.test %s.ref"%(tag,tag)) ):
        status='[FAILED]'.rjust(term_width-rshift) 
    print "%s %s %s"%(tag,command,status)
    test_list.append([tag,command,status.strip()])

    tests_status = '[PASSED]'
    for tag,command,status in test_list:
        if ( status == '[FAILED]' ):
            tests_status = '[FAILED]'

    print "\n          Testing of %s module  %s"%(mod_name,tests_status)

    update_ref = False  
    for tag,command,status in test_list:
        os.system("cp %s.test %s.ref"%(tag,tag))
        
    sys.exit(0)
def compute_pbc(filepath, bcoption='pbc', epsilons=[0.01], etas=[0.1]):
    #pbc = PBC(bcoption=bcoption, is_get_bc_hyperedge=True)
    pbc = PBC(bcoption=bcoption)
    pbc.load_graph(filepath)
    if bcoption == 'slpbc':
        for eps in epsilons:
            for eta in etas:
                pbc.compute(eps=eps, eta=eta)
                bc_path = get_bcpath(filepath, bcoption, eps=eps)
                pbc.store_bc(bc_path)
                if pbc.is_get_bc_hyperedge:
                    bc_path = get_bcpath(
                        filepath,
                        bcoption,
                        eps=eps,
                        is_get_bc_hyperedge=pbc.is_get_bc_hyperedge)
                    pbc.store_bcE(bc_path)
    elif bcoption == 'naiveslpbc':
        for eps in epsilons:
            for eta in etas:
                pbc.compute(eps=eps, eta=eta)
                bc_path = get_bcpath(filepath, bcoption, eps=eps)
                pbc.store_bc(bc_path)
                if pbc.is_get_bc_hyperedge:
                    bc_path = get_bcpath(
                        filepath,
                        bcoption,
                        eps=eps,
                        is_get_bc_hyperedge=pbc.is_get_bc_hyperedge)
                    pbc.store_bcE(bc_path)
    elif bcoption == 'bbc':
        for eps in epsilons:
            pbc.compute(eps=eps)
            bc_path = get_bcpath(filepath, bcoption, eps=eps)
            pbc.store_bc(bc_path)
    else:
        pbc.compute()
        bc_path = get_bcpath(filepath, bcoption)
        pbc.store_bc(bc_path)