def test_gh34_35(): pvsys = PVsystem() # display unique id numbers LOGGER.debug('\n*** unique id numbers ***') LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug('pvcells:\n%r', { hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells }) # test strings references same object assert pvsys.pvstrs[0] == pvsys.pvstrs[1] # modules references same object assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] # cells reference same object assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] # test set suns on just string #2 pvsys.setSuns({2: 0.88}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug('pvcells:\n%r', { hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells }) # test other string not changed assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 1.0).all() # test all modules in string #2 changed assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() # test strings references same object assert pvsys.pvstrs[0] == pvsys.pvstrs[1] # modules references same object assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] # cells reference same object assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvmods[2][0].pvcells[0] == pvsys.pvmods[2][2].pvcells[2] # test set suns on just module #4 in string #2 pvsys.setSuns({2: {4: 0.75}}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug('pvcells:\n%r', { hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells }) assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[4].Ee == 1.0).all() assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[4].Ee == 0.75).all() assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] # set just cells #0 and #2 in module #4 in string #2 pvsys.setSuns({2: {4: {'Ee': 0.66, 'cells': [0, 2]}}}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug('pvcells:\n%r', { hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells }) assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[4].Ee == 1.0).all() assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Ee == 0.66 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Ee == 0.75 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Ee == 0.66 assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[ 4].pvcells[2] # set cells 3 and 4 to one irradiance and 5 to another. should only make two new cell objects pvsys.setSuns({2: {4: {'Ee': (0.33, 0.99, 0.33), 'cells': (3, 4, 5)}}}) assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[4].Ee == 1.0).all() assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Ee == 0.66 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Ee == 0.75 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Ee == 0.66 assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[ 4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Ee == 0.99 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[ 4].pvcells[5] # set all of a string with a single value, two ways. make sure no unnecessary modules are created pvsys.setSuns({1: 0.5}) assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 0.5).all() assert (pvsys.pvstrs[1].pvmods[4].Ee == 0.5).all() assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Ee == 0.66 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Ee == 0.75 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Ee == 0.66 assert pvsys.pvstrs[0] != pvsys.pvstrs[1] assert pvsys.pvmods[0][0] != pvsys.pvmods[1][1] assert pvsys.pvmods[1][2].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[ 4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Ee == 0.99 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[ 4].pvcells[5] assert pvsys.pvstrs[1].pvmods[0] == pvsys.pvstrs[1].pvmods[2] pvsys.setSuns({1: [0.6]}) assert (pvsys.pvstrs[0].pvmods[0].Ee == 1.0).all() assert (pvsys.pvstrs[1].pvmods[1].Ee == 0.6).all() assert (pvsys.pvstrs[1].pvmods[4].Ee == 0.6).all() assert (pvsys.pvstrs[2].pvmods[0].Ee == 0.88).all() assert (pvsys.pvstrs[2].pvmods[2].Ee == 0.88).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Ee == 0.66 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Ee == 0.75 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Ee == 0.66 assert pvsys.pvstrs[0] != pvsys.pvstrs[1] assert pvsys.pvmods[0][0] != pvsys.pvmods[1][1] assert pvsys.pvmods[1][2].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[ 4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Ee == 0.99 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Ee == 0.33 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[ 4].pvcells[5] assert pvsys.pvstrs[1].pvmods[0] == pvsys.pvstrs[1].pvmods[2]
def test_set_mod_2(): pvsys = PVsystem() Ee = {1: {3: .2, 0: .1}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29570.33263114967))
def test_set_str_2(): pvsys = PVsystem() Ee = {1: .1} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29140.183832416682))
def test_dictionary(): pvsys = PVsystem() Ee = {1: {3: {'cells': np.arange(30), 'Ee': [.25] * 30}}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 31619.56808987828))
def test_set_mod_1(): pvsys = PVsystem() Ee = {1: {3: [.2], 0: [.1]}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29570.33263114967))
def test_set_str_2(): pvsys = PVsystem() Ee = {1: .1} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29131.92967897601))
def test_basic(): pvsys = PVsystem() pvsys.setSuns(.75) ok_(np.isclose(pvsys.Pmp, 23908.773330127806))
def test_set_mod_2(): pvsys = PVsystem() Ee = {1: {3: .2, 0: .1}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29555.687509091586))
def test_set_mod_1(): pvsys = PVsystem() Ee = {1: {3: [.2], 0: [.1]}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 29555.687509091586))
def test_dictionary(): pvsys = PVsystem() Ee = {1: {3: {'cells': np.arange(30), 'Ee': [.25] * 30}}} pvsys.setSuns(Ee) ok_(np.isclose(pvsys.Pmp, 31610.641289630337))
def test_basic(): pvsys = PVsystem() pvsys.setSuns(.75) ok_(np.isclose(pvsys.Pmp, 23901.66450809984))
def test_settemp(): pvsys = PVsystem() # display unique id numbers LOGGER.debug('\n*** unique id numbers ***') LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug( 'pvcells:\n%r', {hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells} ) # test strings references same object assert pvsys.pvstrs[0] == pvsys.pvstrs[1] # modules references same object assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] # cells reference same object assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] # test set suns on just string #2 pvsys.setTemps({2: 373}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug( 'pvcells:\n%r', {hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells} ) # test other string not changed assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 298.15).all() # test all modules in string #2 changed assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() # test strings references same object assert pvsys.pvstrs[0] == pvsys.pvstrs[1] # modules references same object assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] # cells reference same object assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvmods[2][0].pvcells[0] == pvsys.pvmods[2][2].pvcells[2] # test set suns on just module #4 in string #2 pvsys.setTemps({2: {4: 300}}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug( 'pvcells:\n%r', {hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells} ) assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[4].Tcell == 298.15).all() assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[4].Tcell == 300).all() assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] # set just cells #0 and #2 in module #4 in string #2 pvsys.setTemps({2: {4: {'Tc': 290, 'cells': [0, 2]}}}) # display unique id numbers LOGGER.debug('pvstrs:\n%r', set(pvsys.pvstrs)) LOGGER.debug('pvmods:\n%r', set([x for y in pvsys.pvmods for x in y])) LOGGER.debug( 'pvcells:\n%r', {hex(int(id(z))): z for y in pvsys.pvmods for x in y for z in x.pvcells} ) assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[4].Tcell == 298.15).all() assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Tcell == 290 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Tcell == 300 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Tcell == 290 assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[4].pvcells[2] # set cells 3 and 4 to one irradiance and 5 to another. should only make two new cell objects pvsys.setTemps({2: {4: {'Tc': (310, 320, 310), 'cells': (3, 4, 5)}}}) assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[4].Tcell == 298.15).all() assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Tcell == 290 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Tcell == 300 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Tcell == 290 assert pvsys.pvstrs[0] == pvsys.pvstrs[1] assert pvsys.pvmods[0][0] == pvsys.pvmods[1][1] assert pvsys.pvmods[0][0].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Tcell == 320 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[4].pvcells[5] # set all of a string with a single value, two ways. make sure no unnecessary modules are created pvsys.setTemps({1: 350}) assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 350).all() assert (pvsys.pvstrs[1].pvmods[4].Tcell == 350).all() assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Tcell == 290 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Tcell == 300 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Tcell == 290 assert pvsys.pvstrs[0] != pvsys.pvstrs[1] assert pvsys.pvmods[0][0] != pvsys.pvmods[1][1] assert pvsys.pvmods[1][2].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Tcell == 320 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[4].pvcells[5] assert pvsys.pvstrs[1].pvmods[0] == pvsys.pvstrs[1].pvmods[2] pvsys.setTemps({1: [360]}) assert (pvsys.pvstrs[0].pvmods[0].Tcell == 298.15).all() assert (pvsys.pvstrs[1].pvmods[1].Tcell == 360).all() assert (pvsys.pvstrs[1].pvmods[4].Tcell == 360).all() assert (pvsys.pvstrs[2].pvmods[0].Tcell == 373).all() assert (pvsys.pvstrs[2].pvmods[2].Tcell == 373).all() assert pvsys.pvstrs[2].pvmods[4].pvcells[0].Tcell == 290 assert pvsys.pvstrs[2].pvmods[4].pvcells[1].Tcell == 300 assert pvsys.pvstrs[2].pvmods[4].pvcells[2].Tcell == 290 assert pvsys.pvstrs[0] != pvsys.pvstrs[1] assert pvsys.pvmods[0][0] != pvsys.pvmods[1][1] assert pvsys.pvmods[1][2].pvcells[0] == pvsys.pvmods[1][1].pvcells[1] assert pvsys.pvstrs[2].pvmods[4].pvcells[0] == pvsys.pvstrs[2].pvmods[4].pvcells[2] assert pvsys.pvstrs[2].pvmods[4].pvcells[3].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[4].Tcell == 320 assert pvsys.pvstrs[2].pvmods[4].pvcells[5].Tcell == 310 assert pvsys.pvstrs[2].pvmods[4].pvcells[3] == pvsys.pvstrs[2].pvmods[4].pvcells[5] assert pvsys.pvstrs[1].pvmods[0] == pvsys.pvstrs[1].pvmods[2]