예제 #1
0
파일: vasp2fitpot.py 프로젝트: ryokbys/nap
def structure2aSys(structure,idoffset=1):
    """
    Converts Structure object of pymatgen to NAPSystem object in nap.

    Args:
        structure (Structure): pymatgen Structure object to be converted
        to NAPSystem object..

    Returns:
        aSys (NAPSystem): 
    """
    lattice= structure.lattice
    alc= 1.0
    a1= np.array(lattice.matrix[0])
    a2= np.array(lattice.matrix[1])
    a3= np.array(lattice.matrix[2])
    #... rescale a? vectors
    a1= a1/alc
    a2= a2/alc
    a3= a3/alc
    aSys= NAPSystem()
    aSys.set_lattice(alc,a1,a2,a3)
    for ia in range(structure.num_sites):
        ai= Atom()
        si= structure[ia]
        crd= si.frac_coords
        ai.set_pos(crd[0],crd[1],crd[2])
        sid= structure.symbol_set.index(si.species_string)+idoffset
        ai.set_sid(sid)
        ai.set_id(ia+1)
        aSys.add_atom(ai)
    return aSys
예제 #2
0
파일: mdb2fitpot.py 프로젝트: medgbb/nap
def doc_to_pos(doc, conf):
    """
    Make a pos file, which has pmd format, from a document in MongoDB.
    """
    psys = NAPSystem()
    matrix = doc['calculations'][-1]['output']['crystal']['lattice']['matrix']
    a1 = matrix[0]
    a2 = matrix[1]
    a3 = matrix[2]
    psys.set_lattice(1.0, a1, a2, a3)

    species_ids = conf['species_ids']

    sites = doc['calculations'][-1]['output']['crystal']['sites']
    for site in sites:
        ra = site['abc']
        ai = Atom()
        ai.set_pos(ra[0], ra[1], ra[2])
        ai.set_sid(species_ids[site['species'][0]['element']])
        psys.add_atom(ai)
    return psys