def buckingham_potential(self, structure, val_dict=None):
        """
        Generate species, buckingham, and spring options for an oxide structure
        using the parameters in default libraries.

        Ref:
            1. G.V. Lewis and C.R.A. Catlow, J. Phys. C: Solid State Phys.,
               18, 1149-1161 (1985)
            2. T.S.Bush, J.D.Gale, C.R.A.Catlow and P.D. Battle,
               J. Mater Chem., 4, 831-837 (1994)

        Args:
            structure: pymatgen.core.structure.Structure
            val_dict (Needed if structure is not charge neutral): {El:valence}
                dict, where El is element.
        """
        if not val_dict:
            try:
                #If structure is oxidation state decorated, use that first.
                el = [site.specie.symbol for site in structure]
                valences = [site.specie.oxi_state for site in structure]
                val_dict = dict(zip(el, valences))
            except AttributeError:
                bv = BVAnalyzer()
                el = [site.specie.symbol for site in structure]
                valences = bv.get_valences(structure)
                val_dict = dict(zip(el, valences))

        #Try bush library first
        bpb = BuckinghamPotential('bush')
        bpl = BuckinghamPotential('lewis')
        gin = ""
        for key in val_dict.keys():
            use_bush = True
            el = re.sub(r'[1-9,+,\-]', '', key)
            if el not in bpb.species_dict.keys():
                use_bush = False
            elif val_dict[key] != bpb.species_dict[el]['oxi']:
                use_bush = False
            if use_bush:
                gin += "species \n"
                gin += bpb.species_dict[el]['inp_str']
                gin += "buckingham \n"
                gin += bpb.pot_dict[el]
                gin += "spring \n"
                gin += bpb.spring_dict[el]
                continue

            #Try lewis library next if element is not in bush
            #use_lewis = True
            if el != "O":  # For metals the key is "Metal_OxiState+"
                k = el + '_' + str(int(val_dict[key])) + '+'
                if k not in bpl.species_dict.keys():
                    #use_lewis = False
                    raise GulpError("Element {} not in library".format(k))
                gin += "species\n"
                gin += bpl.species_dict[k]
                gin += "buckingham\n"
                gin += bpl.pot_dict[k]
            else:
                gin += "species\n"
                k = "O_core"
                gin += bpl.species_dict[k]
                k = "O_shel"
                gin += bpl.species_dict[k]
                gin += "buckingham\n"
                gin += bpl.pot_dict[key]
                gin += 'spring\n'
                gin += bpl.spring_dict[key]
        return gin
def buckingham_potential ( self , structure , val_dict = None ) : if not val_dict : try : el = [ site . specie . symbol for site in structure ] valences = [ site . specie . oxi_state for site in structure ] val_dict = dict ( zip ( el , valences ) ) except AttributeError : bv = BVAnalyzer ( ) el = [ site . specie . symbol for site in structure ] valences = bv . get_valences ( structure ) val_dict = dict ( zip ( el , valences ) ) bpb = BuckinghamPotential ( 'bush' ) bpl = BuckinghamPotential ( 'lewis' ) gin = "" for key in val_dict . keys ( ) : use_bush = True el = re . sub ( r'[1-9,+,\-]' , '' , key ) if el not in bpb . species_dict . keys ( ) : use_bush = False elif val_dict [ key ] != bpb . species_dict [ el ] [ 'oxi' ] : use_bush = False if use_bush : gin += "species \n" gin += bpb . species_dict [ el ] [ 'inp_str' ] gin += "buckingham \n" gin += bpb . pot_dict [ el ] gin += "spring \n" gin += bpb . spring_dict [ el ] continue if el != "O" : k = el + '_' + str ( int ( val_dict [ key ] ) ) + '+' if k not in bpl . species_dict . keys ( ) : raise GulpError ( "Element {} not in library" . format ( k ) ) gin += "species\n" gin += bpl . species_dict [ k ] gin += "buckingham\n" gin += bpl . pot_dict [ k ] else : gin += "species\n" k = "O_core" gin += bpl . species_dict [ k ] k = "O_shel" gin += bpl . species_dict [ k ] gin += "buckingham\n" gin += bpl . pot_dict [ key ] gin += 'spring\n' gin += bpl . spring_dict [ key ] return gin
Generate species, buckingham, and spring options for an oxide structure
        using the parameters in default libraries.

        Ref:
            1. G.V. Lewis and C.R.A. Catlow, J. Phys. C: Solid State Phys.,
               18, 1149-1161 (1985)
            2. T.S.Bush, J.D.Gale, C.R.A.Catlow and P.D. Battle,
               J. Mater Chem., 4, 831-837 (1994)

        Args:
            structure: pymatgen.core.structure.Structure
            val_dict (Needed if structure is not charge neutral): {El:valence}
                dict, where El is element.