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'])
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)
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)
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'],
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',
def test__read_setfl_filename(symbols, setfl_filename): o = EamPotentialFitter(symbols) o.read_setfl_file(filename=setfl_filename) assert isinstance(o.setfl_reader, SeatonSetflReader)
'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.)
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',