Ejemplo n.º 1
0
statistics = univariate_statistics(data)

x_min = statistics[2]
x_max = statistics[3]
y_min = statistics[4]
y_max = statistics[5]

# 	G. Fit a quadratic polynomial to the data using quadratic_fit function

quadratic_coefficients = quadratic_fit(data)

# 	H. Pass 'vinet' to fit_eos

volumes = data[:, 0]
energies = data[:, 1]
vinet = fit_eos(volumes, energies, quadratic_coefficients, 'vinet')

# 	I. Write a convert_units module for atomic units
for i in range(len(data)):
    volume = data[i][0]
    energy = data[i][1]

    volume = convert_units(volume, 'Cubic Bohr/atom', 'Cubic Angstrom/atom')
    energy = convert_units(energy, 'Rydberg/atom', 'electron volts/atom')

    # data[i][0] = volume
    # data[i][1] = energy

for i in range(len(vinet)):
    bulk = vinet[i]
    bulk = convert_units(bulk, 'Rydberg/Cubic Bohr', 'Gigapascals')
Ejemplo n.º 2
0
# 4.
statistics = us.univariate_statistics(data1)
print('Statistics of data:')
print(statistics)

# 5.
quadratic_coefficients = qf.quadratic_fit(data1)
print('Quadratic coefficients of revised data:')
print(quadratic_coefficients)

# 6.
volumes = data1[:, 0]
energies = data1[:, 1]
eos_passed_info, eos_parameters = eos.fit_eos(volumes,
                                              energies,
                                              quadratic_coefficients,
                                              my_eos,
                                              number_of_points=50)
print('Fitted Data/Quadratic Coefficients:')
print(eos_passed_info)
equilibrium_volume = eos_parameters[3]
bulk_modulus = eos_parameters[1]
print(bulk_modulus)


# 7.
def convert_units(value_to_convert_from, units_of_value_converted_from,
                  unit_to_convert_to):
    if units_of_value_converted_from == 'cubic bohr/atom':
        value_in_requested_units = value_to_convert_from * 0.148185
    elif units_of_value_converted_from == 'rydberg/atom':
Ejemplo n.º 3
0
#fit_curve = fit_curve_array(quadratic_coefficients, min_x, max_x, number_of_points=100)
#scatter_plot, curve_plot = plot_data_with_fit(array, fit_curve, data_format="bo", #fit_format="k")
#plt.show()
#plt.savefig("Initial_plot.png")
"""
"""
\/\/attempting the annotation \/\/
"""

undo_array = zip(*array)
array_2 = list(undo_array)
# fit_eos_curve, bulk_modulus = fit_eos(array_2[0], array_2[1], quadratic_coefficients, eos='murnaghan', number_of_points=50)   #6
fit_eos_curve, fit_parameters = fit_eos(array[0],
                                        array[1],
                                        quadratic_coefficients,
                                        eos='murnaghan',
                                        number_of_points=50)  #6
bulk_modulus = fit_parameters[1]
equilibrium_volume = fit_parameters[3]

#print(fit_eos, bulk_modulus)


def annotate_graph(symbol, structure):
    ax.annotate(symbol, xy=(130, 0.001))

    ax.annotate(r'$ {}\overline{{{}}} {}$'.format(structure[0:2], structure[3],
                                                  structure[1]),
                xy=(115, 0))
    chemical_symbol = names[0]
    crystal_symetery = names[1]
    d_f_c_a = names[2]
    return chemical_symbol, crystal_symetery, d_f_c_a


array = two_column_text_read("Ag.Fm-3m.GGA-PBE.volumes_energies.dat")


stats = bivariate_statistics(array)
#print(stats)

quadratic_coefficients = quadratic_fit(array)
volumes = array[0, :]
energies = array[1, :]
fit_eos_array, fit_parameters = fit_eos(volumes, energies, quadratic_coefficients, eos="murnaghan", number_of_points=50)
fit_volumes = np.linspace(volumes[0], volumes[-1], 50)
bulk_modulus = fit_parameters[1]
equilibrium_volume = fit_parameters[3]
print(equilibrium_volume)
# Define an array of fit volumes going from volumes[0] to volumes[-1] but equal in number of points to fit_eos_array

plt.plot(volumes, energies, 'bo')
plt.plot(fit_volumes, fit_eos_array, 'k')
plt.xlabel(r'$\mathit{V}(\AA^3$/atom)')
plt.ylabel(r'$\mathit{E}$ (eV/atom)')
plt.title('Murnaghan Equation of State for Ag in DFT GGA-PBE')
plt.text(100.79, -287.32865, 'Created by Cheo Reyes 2020-05-12')
plt.text(120.94, -287.32250,'$\mathit{V}=120.549(\AA^3$/atom)')
plt.text(100.73, -287.31470, "Ag")
plt.text(115.19, -287.32454,'$\mathit{Fm}3\mathit{m}$')
#4
statistics = univariate_statistics(data)

#5
quadratic_coefficients = quadratic_fit(data)

#6
""" Must reformat data before finding fit curve. """
un_data = zip(*data)
data_2 = list(un_data)

volumes = data_2[0]
energies = data_2[1]

eos_fit_curve, bulk_modulus = fit_eos(volumes,
                                      energies,
                                      quadratic_coefficients,
                                      eos=my_eos)

#7
"""  Convert units module """


def convert_units(value_to_be_converted, units_of_value_to_be_converted_from,
                  units_to_be_converted_to):
    """
    :param value_to_be_converted: Somevalue
    :param units_of_the_value_to_be_converted_from: Accepted units: cb/a, rb/a, rb/cb
    :param units_to_be_converted_to: Accepted units: ca/a, ev/a, GPa
    :return: value_in_the_requested_units
    """
    if units_of_value_to_be_converted_from == "cb/a":
Ejemplo n.º 6
0
statistics = univariate_statistics(data)
mean = (statistics[0])
standard_deviation = statistics[1]
min_x = statistics[2]
max_x = statistics[3]
min_y = statistics[4]
max_y = statistics[5]

quadratic_coefficients = quadratic_fit(data)
un_data = zip(*data)
data_list = list(un_data)

Eos_fit = fit_eos(data[0],
                  data[1],
                  quadratic_coefficients,
                  eos='birch-murnaghan',
                  number_of_points=50)
fit_curve = fit_curve_array(Eos_fit, min_x, max_x)
bulkmodulus = 230

volume = convert_units(data[0], 'cb/a')
energy = convert_units(data[1], 'rb/a')


def annotate_plot(chem_symb, crystal_symm, density_ex):
    import matplotlib.pyplot as mp
    annotation_chem = mp.annotate(chem_symb, xy=(200, 0.028))
    annotation_crys = mp.annotate(crystal_symm, xy=(230, -.036))
    annotation_dens = mp.annotate(density_ex, xy=(220, -.039))
    return (annotation_chem, annotation_crys, annotation_dens)