Source code for defermi.chempots.tests.test_chempots
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon May 15 10:02:03 2023
@author: villa
"""
import numpy as np
from pymatgen.core.periodic_table import Element
from defermi.chempots.core import Chempots, chempot_ideal_gas
from defermi.testing.core import DefermiTest
from defermi.testing.chempots import ChempotsTest
[docs]
class TestChempots(DefermiTest):
[docs]
def setUp(self):
self.mu_refs = {'Na': -1.31, 'Nb': -10.1, 'O': -4.95}
self.mu = Chempots({'Na':-2.26,'Nb':-6.15,'O':-1.92})
self.mu_abs = Chempots({'Na':-3.57,'Nb':-16.25,'O':-6.87})
[docs]
def test_as_dict_from_dict(self):
self.assert_object_almost_equal( self.mu.as_dict() , Chempots.from_dict(self.mu.as_dict()).as_dict() )
[docs]
def test_pmg_elements(self):
mu_elements = {Element('Na'):-2.26,Element('Nb'):-6.15,Element('O'):-1.92}
ChempotsTest().assert_Chempots_equal( self.mu , Chempots.from_pmg_elements(mu_elements) )
self.assert_object_almost_equal( self.mu.to_pmg_elements() , mu_elements )
[docs]
def test_absolute_referenced(self):
ChempotsTest().assert_Chempots_equal( self.mu.get_absolute(self.mu_refs) , self.mu_abs, rtol=1e-03 )
ChempotsTest().assert_Chempots_equal( self.mu_abs.get_referenced(self.mu_refs) , self.mu, rtol=1e-03 )
[docs]
def test_chempot_ideal_gas():
actual = chempot_ideal_gas(0,300,0.2)
desired = -0.0208035922029101
np.testing.assert_allclose(actual, desired, atol=1e-04)
actual = chempot_ideal_gas(0,1300,0.2)
desired = -0.09014889954594378
np.testing.assert_allclose(actual, desired, atol=1e-04)