Source code for jarvis.tests.testfiles.analysis.solar.test_solar
from jarvis.analysis.solarefficiency.solar import SolarEfficiency
from jarvis.io.vasp.outputs import Vasprun
import os
import tarfile
import matplotlib.pyplot as plt
plt.switch_backend('agg')
example_fold_tgz = os.path.join(
os.path.dirname(__file__),
"..",
"..",
"..",
"..",
"examples",
"vasp",
"SiOptb88.tgz",
)
example_fold = os.path.join(
os.path.dirname(__file__),
"..",
"..",
"..",
"..",
"examples",
"vasp",
"SiOptb88",
)
if not os.path.isdir(example_fold):
tar = tarfile.open(example_fold_tgz)
tar.extractall(example_fold)
tar.close()
vrun_path = os.path.join(
os.path.dirname(__file__),
"..",
"..",
"..",
"..",
"examples",
"vasp",
"SiOptb88",
"SiOptb88",
"MAIN-MBJ-bulk@mp_149",
"vasprun.xml",
)
[docs]def test_solar():
v = Vasprun(vrun_path)
dirgap = v.get_dir_gap
indirgap = v.get_indir_gap[0]
en, abz = v.avg_absorption_coefficient
abz = abz * 100
eff_slme = SolarEfficiency().slme(
en, abz, indirgap, indirgap, plot_current_voltage=True
)
# print("SLME", 100 * eff)
eff_sq = SolarEfficiency().calculate_SQ(indirgap, plot_current_voltage=True)
# print("SQ", 100 * eff)
assert (round(100 * eff_slme, 2), round(100 * eff_sq, 2)) == (33.23, 32.93)
cmd='rm sq.png slme.png'
os.system(cmd)
# test_solar()