Source code for defermi.chempots.tests.test_reservoirs
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 3 10:08:17 2025
@author: lorenzo
"""
import os
from pymatgen.analysis.phase_diagram import PhaseDiagram
from defermi.tools.utils import get_object_from_json
from defermi.chempots.core import Chempots
from defermi.chempots.reservoirs import Reservoirs
from defermi.testing.chempots import ChempotsTest, ReservoirsTest
from defermi.chempots.tests.test_chempots import TestChempots
[docs]
class TestReservoirs(TestChempots):
[docs]
def setUp(self):
super().setUp()
res_dict = {'X':self.mu}
pd = get_object_from_json(PhaseDiagram,self.get_testfile_path('PD_Na-Nb-O.json'))
self.res = Reservoirs(res_dict,pd,are_chempots_delta=True)
[docs]
def test_mu_refs(self):
ChempotsTest().assert_Chempots_equal( self.res.mu_refs , Chempots(self.mu_refs), rtol=1e-02 )
[docs]
def test_as_dict_from_dict(self):
ReservoirsTest().assert_Reservoirs_equal( self.res , Reservoirs.from_dict(self.res.as_dict()) ,rtol=1e-07)
[docs]
def test_to_json_from_json(self):
try:
self.res.to_json('reservoirs_temp.json')
ReservoirsTest().assert_Reservoirs_equal( self.res ,
Reservoirs.from_json('reservoirs_temp.json'), rtol=1e-02)
finally:
os.remove('reservoirs_temp.json')
[docs]
def test_absolute_referenced(self):
self.res.set_to_absolute()
ReservoirsTest().assert_Reservoirs_equal( self.res , Reservoirs({'X':self.mu_abs}) , check_reference=False, rtol=1e-03 )
self.res.set_to_referenced()
ReservoirsTest().assert_Reservoirs_equal( self.res , Reservoirs({'X':self.mu}), check_reference=False, rtol=1e-03)
res_filtered = Reservoirs({'X':Chempots({'Na':-2.26,'O':-1.92})})
ReservoirsTest().assert_Reservoirs_equal(
self.res.filter_reservoirs(elements=['Na','O']), res_filtered , check_reference=False, rtol=1e-03)