def test_cstr_PE(): sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') conditionlist = In_data.load_condition('./WGSdata/') dEa_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] dBE_index = [4, 5, 6, 7, 8, 9, 10, 11] a = CSTR(specieslist=specieslist, reactionlist=reactionlist, dEa_index=dEa_index, dBE_index=dBE_index) a.initialize() dE_start = np.random.uniform(-20, 20, 20) dE_start = a.CorrThermoConsis(dE_start) # print(dE_start) # print(a.CheckThermoConsis(dE_start)) # for condi in conditionlist: # print(a.parameter_estimation(dE_start, conditionlist, print_screen=True)) dE, obj = a.parameter_estimation(dE_start, conditionlist, print_screen=True) print(dE, obj) # parity Plot expr = [] mkm = [] for kk, condi in enumerate(conditionlist): mkm.append(a.fwd_simulation(dE, condi)['CO(g)']) expr.append(condi.TurnOverFrequency['CO(g)']) # mkm.append(-condi.SimulatedTOF['H2(g)']) parity_plot(expr, mkm, 'Experimental TOF', 'Microkinetic TOF')
def test_cstr(): sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') conditionlist = In_data.load_condition('./WGSdata/') dEa_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] dBE_index = [4, 5, 6, 7, 8, 9, 10, 11] a = CSTR(specieslist=specieslist, reactionlist=reactionlist, dEa_index=dEa_index, dBE_index=dBE_index) a.initialize() dE_start = np.zeros(20) for condi in conditionlist: print(a.fwd_simulation(dE_start, condi)) expr = [] mkm = [] tem = [] for kk, condi in enumerate(conditionlist): mkm.append(a.fwd_simulation(dE_start, condi)['CO(g)']) expr.append(condi.TurnOverFrequency['CO(g)']) # mkm.append(-condi.SimulatedTOF['H2(g)']) tem.append(condi.Temperature) parity_plot(expr, mkm, 'Experimental TOF', 'Microkinetic TOF') import matplotlib.pyplot as plt plt.figure() plt.plot(tem, np.log10(mkm), 'k^') plt.plot(tem, np.log10(expr), 'ro')
def test_new_pe(): sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') conditionlist = In_data.load_condition('./WGSdata/') dEa_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] dBE_index = [4, 5, 6, 7, 8, 9, 10, 11] a = CSTR(specieslist=specieslist, reactionlist=reactionlist, dEa_index=dEa_index, dBE_index=dBE_index) a.initialize() dE_start = np.random.uniform(-20, 20, 20) dE_start = a.CorrThermoConsis(dE_start) evidence = {} evidence['type'] = 'rel' evidence['err'] = 1 prior = {} prior['type'] = 'Ridge' prior['L2'] = 1e-5 prior['lbound'] = [-20] * 20 prior['ubound'] = [20] * 20 dE, obj = a.mle_estimation(dE_start, conditionlist, evidence, prior) expr = [] mkm = [] for kk, condi in enumerate(conditionlist): mkm.append(a.fwd_simulation(dE, condi)[0]['CO(g)']) expr.append(condi.TurnOverFrequency['CO(g)']) # mkm.append(-condi.SimulatedTOF['H2(g)']) parity_plot(expr, mkm, 'Experimental TOF', 'Microkinetic TOF')
def test_read_species(species, site): sitelist = In_data.read_site(site) specieslist = In_data.read_species(species, sitelist) assert len(specieslist) == 2 assert specieslist[0].name == 'carbonmonoxide' assert str(specieslist[0]) == 'CO(g)' assert specieslist[0].phase == 'gaseous' assert specieslist[1].name == '*' assert str(specieslist[1]) == '*' assert specieslist[1].phase == 'surface'
def test_read_site(site): sitelist = In_data.read_site(site) print(str(sitelist[0])) assert len(sitelist) == 1 assert sitelist[0].name == 'Cu' assert sitelist[0].metal == 'Cu' assert sitelist[0].struct == 'FCC' assert sitelist[0].facet == '111'
def test_cstr_MS_PE(): sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') conditionlist = In_data.load_condition('./WGSdata/') dEa_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] dBE_index = [4, 5, 6, 7, 8, 9, 10, 11] a = CSTR(specieslist=specieslist, reactionlist=reactionlist, dEa_index=dEa_index, dBE_index=dBE_index) a.initialize(scale=1e-4) # dE_start = np.zeros(20) # a.parameter_estimation(dE_start, conditionlist, print_screen=True, report='%d.txt'%0) for i in range(200): dE_start = np.random.uniform(-20, 20, 20) dE_start = a.CorrThermoConsis(dE_start) a.parameter_estimation(dE_start, conditionlist, print_screen=True, report='./multi-start/%d.txt' % i)
def test_load(): sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') assert str(sitelist[0]) == 'Cu-FCC-111-all' spenamelist = [ 'H2(g)', 'CO(g)', 'CO2(g)', 'H2O(g)', 'H*', 'O*', 'OH*', 'H2O*', 'CO*', 'CO2*', 'HCOO*', 'COOH*', '*' ] for spe, spename in zip(specieslist, spenamelist): assert str(spe) == spename reactionnamelist = [ 'CO(g)+*>>CO*', 'H2(g)+2*>>2H*', 'H2O(g)+*>>H2O*', 'CO2(g)+*>>CO2*', 'H2O*+*>>H*+OH*', 'OH*+*>>H*+O*', 'CO*+O*>>CO2*+*', '2OH*>>O*+H2O*', 'CO2*+H*>>HCOO*+*', 'CO*+OH*>>COOH*+*', 'COOH*+*>>CO2*+H*', 'COOH*+OH*>>CO2*+H2O*' ] for rxn, rxnname in zip(reactionlist, reactionnamelist): assert str(rxn) == rxnname
import pytest import tempfile from AbCD.io_data import In_data import json In_data.load_mkm('./testing/WGSdata/')
# test tpd evidence from AbCD.model import VacuumTPD from AbCD.io_data import In_data from AbCD.visual import tpd_profile sitelist, specieslist, reactionlist = In_data.load_mkm('./testing/TPDdata/') conditionlist = In_data.load_condition('./testing/TPDdata/') dEa_index = [] dBE_index = [1] tpd = VacuumTPD(specieslist=specieslist, reactionlist=reactionlist, dEa_index=dEa_index, dBE_index=dBE_index) tpd.initialize(pump_level=1) dP = [-25] out = tpd.fwd_simulation(dP, conditionlist[0], reltol=1e-12, abstol=1e-12) _, nd = out.shape des = [2 * (-out[1, i+1] + out[1, i]) for i in range(nd - 1)] # tpd_profile(conditionlist[0].TemGrid[:-1], des, r_=[100, 500]) print(conditionlist[0].TemGrid) prior_info = {} prior_info['type'] = 'Ridge' prior_info['L2'] = 1e-5
import pytest from AbCD.io_data import In_data from AbCD import CSTR import numpy as np sitelist, specieslist, reactionlist = In_data.load_mkm('./WGSdata/') conditionlist = In_data.load_condition('./WGSdata/') dBE_index = [4, 5, 6, 7, 8, 9, 10, 11] dEa_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] def test_cstr_build(): wgs_cstr = CSTR(specieslist=specieslist, reactionlist=reactionlist, dBE_index=dBE_index, dEa_index=dEa_index) assert wgs_cstr.Pnlp.shape[0] == len(dEa_index) + len(dBE_index) wgs_cstr.initialize() E = 0 * np.ones(len(dEa_index) + len(dBE_index)) E = wgs_cstr.CorrThermoConsis(E) assert wgs_cstr.CheckThermoConsis(E) for condi in conditionlist: tor, _ = wgs_cstr.fwd_simulation(E, condi, reltol=1e-12, abstol=1e-14) print(tor) if __name__ == "__main__": test_cstr_build()