def test_001(self): """Test 1""" c = nemo.Context() c.regions = [regions.nsw, regions.vic, regions.sa] c.track_exchanges = True c.verbose = 1 nemo.run(c)
def test_010(self): """Running in one region only produces no interstate exchanges.""" import pandas as pd for rgn in regions.All: if rgn is regions.snowy: continue self.context = nemo.Context() self.context.track_exchanges = True self.context.regions = [rgn] loadpoly = [k for k, v in rgn.polygons.items() if v > 0][0] nswpoly = [k for k, v in regions.nsw.polygons.items() if v > 0][0] qldpoly = [k for k, v in regions.qld.polygons.items() if v > 0][0] sapoly = [k for k, v in regions.sa.polygons.items() if v > 0][0] taspoly = [k for k, v in regions.tas.polygons.items() if v > 0][0] vicpoly = [k for k, v in regions.vic.polygons.items() if v > 0][0] self.context.generators = [] for poly in [nswpoly, qldpoly, sapoly, taspoly, vicpoly]: self.context.generators.append(generators.OCGT(poly, 100)) nemo.run(self.context, endhour=pd.Timestamp('2010-01-05')) self.assertEqual((self.context.exchanges[0] > 0).sum(), 1, 'Only one exchange > 0') # FIXME: we need a numpy array that can be indexed from 1 self.assertTrue( self.context.exchanges[0, loadpoly - 1, loadpoly - 1] > 0, 'Only rgn->rgn is > 0')
def test_003(self): c = nemo.Context() # Add 25 DR generators so that the abbreviated legend is used. for i in range(25): dr = nemo.generators.DemandResponse(polygons.wildcard, 100, 0) c.generators += [dr] print(len(c.generators)) nemo.run(c) utils.plot(c, filename='foo.png') os.unlink('foo.png')
def test_005(self): """Test Context summary with no cost generator.""" c = nemo.Context() c.costs = costs.NullCosts() print(str(c)) c.verbose = True print(str(c)) c.regions = [regions.nsw] print(str(c)) f = types.MethodType(lambda self, costs: None, c.generators[0]) print(f) c.generators[0].summary = f print(c.generators[0].summary(None)) print(str(c))
def test_002(self): """Test 2""" c = nemo.Context() # Make sure there is unserved energy by setting 2nd and # subsequent generator capacity to 0. for g in c.generators[1:]: g.set_capacity(0) nemo.run(c) utils.plot(c, filename='foo.png') os.unlink('foo.png') utils.plot(c, filename='foo.png', spills=True) os.unlink('foo.png') # Test limiting the x-range. xlim = [datetime(2010, 1, 1), datetime(2010, 1, 10)] utils.plot(c, filename='foo.png', xlim=xlim) os.unlink('foo.png')
def test_005(self): """Test Context summary with no cost generator.""" from nemo import costs import types c = nemo.Context() c.costs = costs.NullCosts() print str(c) c.verbose = True print str(c) c.regions = [regions.nsw] print str(c) f = types.MethodType(lambda self, costs: None, c.generators[0], nemo.Context) print f c.generators[0].summary = f print c.generators[0].summary(None) print str(c)
def setUp(self): """Test harness setup.""" self.context = nemo.Context() self.minload = math.floor(self.context.demand.sum(axis=1).min())
def test_004(self): """Test Context.__str__ method.""" c = nemo.Context() print(str(c)) c.regions = [regions.nsw] print(str(c))
"""A stub for profiling tools to run one basic simulation.""" import nemo c = nemo.Context() nemo.run(c)
type=str, help='Filename for evaluation trace (comma separated) [default: None]') parser.add_argument('--version', action='version', version='1.0') args = parser.parse_args() if __name__ == '__main__' and args.list_scenarios: for key in sorted(scenarios.supply_scenarios): descr = scenarios.supply_scenarios[key].__doc__ print '%20s' % key, '\t', descr.split('\n')[0] print sys.exit(0) if __name__ == '__main__': print vars(args) context = nemo.Context() context.relstd = args.reliability_std # Set the system non-synchronous penetration limit. context.nsp_limit = args.nsp_limit assert 0 <= context.nsp_limit <= 1 # Likewise for the minimum share of regional generation. context.min_regional_generation = args.min_regional_generation assert 0 <= context.min_regional_generation <= 1, \ "Minimum regional generation must be in the interval [0,1]" cost_class = costs.cost_switch(args.costs) context.costs = cost_class(args.discount_rate, args.coal_price, args.gas_price, args.ccs_storage_costs) context.costs.carbon = args.carbon_price