def read_file_input(self): #Read Inputs self.init_src = input_info.source_info(None,(0,0),datetime.datetime.now(),False) self.met = input_info.met_info(self.init_src, mode=global_settings.MET_FORMAT, dataset=global_settings.METFILE, test=bool(global_settings.METTEST)).get_met() #Read Reverse settings filepath = global_settings.REVERSE_FILES if len(filepath) == 0: raise Error("[Reverse Engine] ERROR: No input file") self.monitor_count = len(filepath) #Read all files, one file for one monitor maxvalue = -1; maxtick = None for f in filepath: fp = open(f) str_pos = fp.readline().strip().split(',') pos_x, pos_y = int(float(str_pos[0])), int(float(str_pos[1])) str_height = fp.readline().strip().split(',') height,sigma = float(str_height[0]), (0.0 if len(str_height) == 1 else float(str_height[1])) m = monitor((pos_x, pos_y, height)) for line in fp.readlines(): li = line.strip().split(',') ti, va = int(li[0]), float(li[1]) if maxvalue < va: maxvalue = va maxtick = ti #If we open IGNORE MODE, all values less than 1.0e-5 will be filtered. if self.ignore_low_value and va <= 1.0e-5: continue m.record[ti] = va fp.close() self.monitors.append(m)
def runselftest(case=0): testsrc = input_info.source_info(test=True) testmet = input_info.met_info(testsrc, mode=global_settings.MET_FORMAT, dataset=global_settings.METFILE, test=bool(global_settings.METTEST)) print "Reading source data" ReleaseQ = testsrc.read_rate() ReleaseQ1 = global_settings.expand_src([90, 141718800.0, 140853300.0, 136447200.0, 130601400.0]) print "Reading met data" met = testmet.get_met() ## 这里是设置案例编号的地方 if __debug__: print "Case Num: %d" % case starttime = datetime.now() logger.info("starttime=%s" % str(datetime.now())) if case == 0: model = model_puff_core(testsrc, met) model.run_point(points=([1140.0,20.0,1.0]), force_no_debug=True) result = model.point_list elif case == 1: model = model_puff_core(testsrc, met) result = model.run_core_contour(1, False, None, [], False) model.writefield(result, prefix="conc_field") elif case == 2: model = model_puff_core(testsrc, met) points = [(500,20.0,1.0),(1000,50.0,1.0),(2000,150.0,1.)] result = model.run_point(points=points, force_no_debug=True) model.writepoint(result) elif case == 3: model = model_puff_corea(testsrc, met) result = model.run_point(points=[(500,20.0,1.0)], force_no_debug=True) model1 = model_puff_core(ReleaseQ1, MetField, MetSeq) result1 = model1.run_point(points=[(500,20.0,1.0)], force_no_debug=True) from pylab import plot, xlabel, ylabel, grid, show, Rectangle, legend x = result.values()[0].keys() y1 = result.values()[0].values() y2 = result1.values()[0].values() plot(x,y1,'go-') plot(x,y2,'bo--') xlabel(u"时间刻度(10s)") ylabel(u"浓度(mg/m3)") p1 = Rectangle((0, 0), 1, 1, fc="g") p2 = Rectangle((0, 0), 1, 1, fc="b") legend([p1, p2], [u"真实源", u"反算源"]) show() logger.info("endtime=%s" % str(datetime.now())) print "duration=%s" % str(datetime.now() - starttime) print "Program End Normally"
def read_file_input(self): #Read Inputs self.init_src = input_info.source_info(None, (0, 0), datetime.datetime.now(), False) self.met = input_info.met_info(self.init_src, mode=global_settings.MET_FORMAT, dataset=global_settings.METFILE, test=bool( global_settings.METTEST)).get_met() #Read Reverse settings filepath = global_settings.REVERSE_FILES if len(filepath) == 0: raise Error("[Reverse Engine] ERROR: No input file") self.monitor_count = len(filepath) #Read all files, one file for one monitor maxvalue = -1 maxtick = None for f in filepath: fp = open(f) str_pos = fp.readline().strip().split(',') pos_x, pos_y = int(float(str_pos[0])), int(float(str_pos[1])) str_height = fp.readline().strip().split(',') height, sigma = float(str_height[0]), (0.0 if len(str_height) == 1 else float(str_height[1])) m = monitor((pos_x, pos_y, height)) for line in fp.readlines(): li = line.strip().split(',') ti, va = int(li[0]), float(li[1]) if maxvalue < va: maxvalue = va maxtick = ti #If we open IGNORE MODE, all values less than 1.0e-5 will be filtered. if self.ignore_low_value and va <= 1.0e-5: continue m.record[ti] = va fp.close() self.monitors.append(m)
from multi_puff import model_puff_core import input_info import global_settings def plot_debug(result): import pylab from pylab import contour, grid, show contours = (70.9/22.4, 70.9/22.4*3, 70.9/22.4*20) contour(result, contours) grid(True) show() def runselftest(case=0): testsrc = input_info.source_info(test=True) testmet = input_info.met_info(testsrc, mode=global_settings.MET_FORMAT, dataset=global_settings.METFILE, test=bool(global_settings.METTEST)) print "Reading source data" ReleaseQ = testsrc.read_rate() ReleaseQ1 = global_settings.expand_src([90, 141718800.0, 140853300.0, 136447200.0, 130601400.0]) print "Reading met data" met = testmet.get_met() ## 这里是设置案例编号的地方 if __debug__: print "Case Num: %d" % case starttime = datetime.now() logger.info("starttime=%s" % str(datetime.now())) if case == 0: model = model_puff_core(testsrc, met) model.run_point(points=([1140.0,20.0,1.0]), force_no_debug=True) result = model.point_list elif case == 1: