diff --git a/pvmismatch/pvmismatch_lib/pvstring.py b/pvmismatch/pvmismatch_lib/pvstring.py index 3cfa028..02b32ea 100644 --- a/pvmismatch/pvmismatch_lib/pvstring.py +++ b/pvmismatch/pvmismatch_lib/pvstring.py @@ -90,11 +90,19 @@ def setSuns(self, Ee): for pvmod in iter(self.pvmods): pvmod.setSuns(Ee) else: - for pvmod, cell_Ee in Ee.iteritems(): - if hasattr(cell_Ee, 'keys'): - self.pvmods[pvmod].setSuns(**cell_Ee) - else: - self.pvmods[pvmod].setSuns(*cell_Ee) + try: + for pvmod, cell_Ee in Ee.iteritems(): + if hasattr(cell_Ee, 'keys'): + self.pvmods[pvmod].setSuns(**cell_Ee) + else: + try: + self.pvmods[pvmod].setSuns(*cell_Ee) + except TypeError: + self.pvmods[pvmod].setSuns(cell_Ee) + except AttributeError: + Ee = Ee[0] + for pvmod in iter(self.pvmods): + pvmod.setSuns(Ee) # update modules self.Istring, self.Vstring, self.Pstring = self.calcString() diff --git a/pvmismatch/tests/test_pvcell.py b/pvmismatch/tests/test_pvcell.py index 84d5119..ce395a6 100644 --- a/pvmismatch/tests/test_pvcell.py +++ b/pvmismatch/tests/test_pvcell.py @@ -59,7 +59,7 @@ def test_calc_series(): # noinspection PyTypeChecker ok_(np.allclose(i, iv[0])) # noinspection PyTypeChecker - ok_(np.allclose(v, iv[1])) + ok_(np.allclose(v, iv[1], rtol=1e-4)) return i, v diff --git a/pvmismatch/tests/test_setsuns.py b/pvmismatch/tests/test_setsuns.py new file mode 100644 index 0000000..73c0046 --- /dev/null +++ b/pvmismatch/tests/test_setsuns.py @@ -0,0 +1,50 @@ +""" +Test for setSuns method. + +Bennet Meyers 10/10/16 +""" + +import numpy as np +from nose.tools import ok_ +from pvmismatch.pvmismatch_lib.pvsystem import PVsystem + + +def test_basic(): + pvsys = PVsystem() + pvsys.setSuns(.75) + ok_(np.isclose(pvsys.Pmp, 23907.936630685774)) + + +def test_dictionary(): + pvsys = PVsystem() + Ee = {1: {3: {'cells': np.arange(30), 'Ee': [.25] * 30}}} + pvsys.setSuns(Ee) + ok_(np.isclose(pvsys.Pmp, 31618.1813179655)) + + +def test_set_mod_1(): + pvsys = PVsystem() + Ee = {1: {3: [.2], 0: [.1]}} + pvsys.setSuns(Ee) + ok_(np.isclose(pvsys.Pmp, 29566.303088387336)) + + +def test_set_mod_2(): + pvsys = PVsystem() + Ee = {1: {3: .2, 0: .1}} + pvsys.setSuns(Ee) + ok_(np.isclose(pvsys.Pmp, 29566.303088387336)) + + +def test_set_str_1(): + pvsys = PVsystem() + Ee = {1: [.1]} + pvsys.setSuns(Ee) + ok_(np.isclose(pvsys.Pmp, 29136.544447716446)) + + +def test_set_str_2(): + pvsys = PVsystem() + Ee = {1: .1} + pvsys.setSuns(Ee) + ok_(np.isclose(pvsys.Pmp, 29136.544447716446))