def test__fit_potential_pair(symbols, setfl_fn, pair_definition):

    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_fn)

    o.fit_potential_pair(func_pair_potential=pair_definition['formalism'],
                         symbol_pair=pair_definition['pair'],
                         param0=pair_definition['param'])
Example #2
0
def test__fit_potential_pair(symbols, setfl_fn, func_pair_potential,
                             symbol_pair, param0):
    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_fn)

    o.fit_potential_pair(func_pair_potential=func_pair_potential,
                         symbol_pair=symbol_pair,
                         param0=param0,
                         rlow=1.5)
Example #3
0
def test__EamPotentialFitter__init__(symbols):
    o = EamPotentialFitter(symbols)
    assert isinstance(o.pair_potentials, OrderedDict)
    assert isinstance(o.density_functions, OrderedDict)
    assert isinstance(o.embedding_functions, OrderedDict)

    assert list(o.pair_potentials.keys()) \
            == list(["".join(k) for k in determine_eam_setfl_pairs(symbols)])
    assert list(o.density_functions.keys()) == symbols
    assert list(o.embedding_functions.keys()) == symbols

    for k1 in ['p0', 'popt']:
        assert k1 in o.parameters

        for k2 in ['pair', 'embedding', 'density']:
            assert k2 in o.parameters[k1]

        for pair in determine_eam_setfl_pairs(symbols):
            assert "".join(pair) in o.parameters[k1]['pair']
            assert o.parameters[k1]['pair']["".join(pair)] is None

        for s in symbols:
            assert s in o.parameters[k1]['embedding']
            assert o.parameters[k1]['embedding'][s] is None

        for s in symbols:
            assert s in o.parameters[k1]['density']
            assert o.parameters[k1]['embedding'][s] is None

    for k in ['pair', 'embedding', 'density']:
        assert isinstance(o.formalisms[k], OrderedDict)

    for pair in determine_eam_setfl_pairs(symbols):
        pair_name = "".join(pair)
        assert o.formalisms['pair'][pair_name] is None

    for s in symbols:
        assert o.formalisms['density'][s] is None

    for s in symbols:
        assert o.formalisms['embedding'][s] is None

    assert all([v is None for v in o.pair_potentials.values()])
    assert all([v is None for v in o.density_functions.values()])
    assert all([v is None for v in o.embedding_functions.values()])

    assert o.setfl_reader is None
def test__read_setfl_file(symbols, setfl_fn):
    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_fn)
def test____init__(symbols):
    o = EamPotentialFitter(symbols)
Example #6
0
    ax[1].set_xlim([1.5, 5.168])
    #ax[0].set_ylim([-1,5])
    #
    ax[2].plot(rho, o.setfl_reader.embedding_function('Ni'), label='from_file')
    ax[2].plot(rho,
               o.formalisms['embedding']['Ni'](
                   r, **o.parameters['popt']['embedding']['Ni']),
               label='fitted')
    plt.show()


setfl_fn = os.path.join(pypospack.utils.get_pypospack_root_directory(), 'data',
                        'potentials', 'Ni__eam', 'Mishin-Ni-Al-2009.eam.alloy')
symbols = ['Ni']

o = EamPotentialFitter(symbols)
o.read_setfl_file(filename=setfl_fn)
print('fitting the pair potential')
o.fit_potential_pair(
    func_pair_potential=potentials['pair']['NiNi']['formalism'],
    symbol_pair=['Ni', 'Ni'],
    param0=potentials['pair']['NiNi']['param'],
    bounds=potentials['pair']['NiNi']['bounds'],
    rlow=1.5,
    rhigh=5.168)
assert o.formalisms['pair']['NiNi'] == potentials['pair']['NiNi']['formalism']

print(o.parameters['p0']['pair']['NiNi'])
print(o.parameters['popt']['pair']['NiNi'])
print('fitting the density function')
o.fit_density_function(func_density=potentials['density']['Ni']['formalism'],
Example #7
0
potentials['pair']['NiNi']['param']['rc'] = 5.168  # angs
potentials['pair']['NiNi']['param']['h'] = 3.3228  # angs

potentials['embedding'] = OrderedDict()
potentials['embedding']['Ni'] = OrderedDict()
potentials['embedding']['Ni']['formalism'] = func_zopemishin_eos
potentials['embedding']['Ni']['param'] = OrderedDict()
potentials['embedding']['Ni']['param']['a0'] = 0.3138 * 10
potentials['embedding']['Ni']['param']['B0'] = 1.1914e4 * 10
potentials['embedding']['Ni']['param']['E0'] = -4.45
potentials['embedding']['Ni']['param']['beta'] = 0.4890e-2

setfl_fn = os.path.join(pypospack.utils.get_pypospack_root_directory(), 'data',
                        'potentials', 'Ni__eam', 'Mishin-Ni-Al-2009.eam.alloy')
symbols = ['Ni']
o = EamPotentialFitter(symbols)
o.read_setfl_file(filename=setfl_fn)

print('fitting the pair potential')
GGo.fit_potential_pair(
    func_pair_potential=potentials['pair']['NiNi']['formalism'],
    symbol_pair=['Ni', 'Ni'],
    param0=potentials['pair']['NiNi']['param'],
    rlow=1.5)
assert o.formalisms['pair']['NiNi'] == potentials['pair']['NiNi']['formalism']
print(o.parameters['p0']['pair']['NiNi'])
print(o.parameters['popt']['pair']['NiNi'])

print('fitting the density function')
o.fit_density_function(func_density=potentials['density']['Ni']['formalism'],
                       symbol='Ni',
Example #8
0
def test__read_setfl_filename(symbols, setfl_filename):
    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_filename)

    assert isinstance(o.setfl_reader, SeatonSetflReader)
Example #9
0
    'symbols,setfl_fn,func_pair_potential,symbol_pair,param0', [(
        ['Ni', 'Al'],
        potentials['setfl_fn'],
        potentials['pair']['NiNi']['formalism'],
        ['Ni', 'Ni'],
        potentials['pair']['NiNi']['param'],
    )])
def test__fit_potential_pair(symbols, setfl_fn, func_pair_potential,
                             symbol_pair, param0):
    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_fn)

    o.fit_potential_pair(func_pair_potential=func_pair_potential,
                         symbol_pair=symbol_pair,
                         param0=param0,
                         rlow=1.5)


if __name__ == "__main__":
    setfl_fn = os.path.join(pypospack.utils.get_pypospack_root_directory(),
                            'data', 'potentials', 'Ni__eam',
                            'Mishin-Ni-Al-2009.eam.alloy')
    symbols = ['Ni']
    o = EamPotentialFitter(symbols)
    o.read_setfl_file(filename=setfl_fn)
    o.fit_potential_pair(
        func_pair_potential=potentials['pair']['NiNi']['formalism'],
        symbol_pair=['Ni', 'Ni'],
        param0=potentials['pair']['NiNi']['param'],
        rlow=2.)
Example #10
0
potentials['pair']['NiNi']['param']['hc'] = 3.3228  # angs
potentials['pair']['NiNi']['param']['h0'] = 3.3228  # angs

potentials['embedding'] = OrderedDict()
potentials['embedding']['Ni'] = OrderedDict()
potentials['embedding']['Ni']['formalism'] = func_zopemishin_eos
potentials['embedding']['Ni']['param'] = OrderedDict()
potentials['embedding']['Ni']['param']['a0'] = 0.3138 * 10
potentials['embedding']['Ni']['param']['B'] = 1.1914e4 * 10
potentials['embedding']['Ni']['param']['E0'] = -4.45
potentials['embedding']['Ni']['param']['beta'] = 0.4890e-2

setfl_fn = os.path.join(pypospack.utils.get_pypospack_root_directory(), 'data',
                        'potentials', 'Ni__eam', 'Mishin-Ni-Al-2009.eam.alloy')
symbols = ['Ni']
o = EamPotentialFitter(symbols)
o.read_setfl_file(filename=setfl_fn)

print('fitting the pair potential')
o.fit_potential_pair(
    func_pair_potential=potentials['pair']['NiNi']['formalism'],
    symbol_pair=['Ni', 'Ni'],
    param0=potentials['pair']['NiNi']['param'],
    rlow=1.5)
assert o.formalisms['pair']['NiNi'] == potentials['pair']['NiNi']['formalism']
print(o.parameters['p0']['pair']['NiNi'])
print(o.parameters['popt']['pair']['NiNi'])

print('fitting the density function')
o.fit_density_function(func_density=potentials['density']['Ni']['formalism'],
                       symbol='Ni',