Skip to content

Commit

Permalink
fix ZeroDivisionError in fermisolver test
Browse files Browse the repository at this point in the history
  • Loading branch information
alexsquires committed Jan 8, 2025
1 parent 9f11297 commit 6454aca
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
4 changes: 2 additions & 2 deletions doped/thermodynamics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6602,7 +6602,7 @@ def _generate_annealed_defect_system(
initial_conc_dict = defect_system.concentration_dict() # concentrations at initial temperature

# Exclude the free_defects, carrier concentrations and Fermi level from fixing
all_free_defects = ["Fermi Energy", "n0", "p0", *free_defects]
all_free_defects = ["Dopant", "Fermi Energy", "n0", "p0", *free_defects]

# Get the fixed concentrations of non-exceptional (not-free) defects
decomposed_conc_dict = defect_system.concentration_dict(decomposed=True)
Expand All @@ -6627,7 +6627,7 @@ def _generate_annealed_defect_system(
if key in list(fixed_concs.keys()):
v.fix_concentration(fixed_concs[key] / 1e24 * defect_system.volume)

elif defect_species.name in fixed_concs:
elif defect_species.name in fixed_concs and defect_species.name:
defect_species.fix_concentration(
fixed_concs[defect_species.name] / 1e24 * defect_system.volume
)
Expand Down
16 changes: 11 additions & 5 deletions tests/test_fermisolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -631,17 +631,23 @@ def test_pseudo_equilibrium_solve_doped_backend(self, backend):
concentrations["Holes (cm^-3)"].iloc[0], self.CdTe_anneal_800K_eff_1e16_h_conc, rtol=1e-3
)

fermisolver_concentrations = concentrations["Concentration (cm^-3)"]
fermisolver_concentrations = concentrations["Concentration (cm^-3)"].copy()

# Only modify if backend is "py-sc-fermi"
if backend == "py-sc-fermi":
fermisolver_concentrations["Te_i_Td_Te2.83"] = fermisolver_concentrations["Te_i_Td_Te2.83_a"]
fermisolver_concentrations = fermisolver_concentrations.drop(
["Te_i_Td_Te2.83_a", "Te_i_Td_Te2.83_b"],
# Rename "Te_i_Td_Te2.83_a" to "Te_i_Td_Te2.83" (same position in the Series)
fermisolver_concentrations = fermisolver_concentrations.rename(
{"Te_i_Td_Te2.83_a": "Te_i_Td_Te2.83"}
)
# Drop "Te_i_Td_Te2.83_b" to remove it completely
fermisolver_concentrations = fermisolver_concentrations.drop("Te_i_Td_Te2.83_b")

# Final assertion to compare with expected data
pd.testing.assert_series_equal(
self.CdTe_anneal_800K_eff_1e16_conc_df["Concentration (cm^-3)"],
fermisolver_concentrations,
rtol=1e-3,
) # also checks the index and ordering
)

def test_pseudo_equilibrium_solve_mocked_py_sc_fermi_backend(self):
"""
Expand Down

0 comments on commit 6454aca

Please sign in to comment.