示例#1
0
 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)
示例#2
0
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"
示例#3
0
 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)
示例#4
0
 def prep_model(self, source, met):
     src = input_info.source_info(source, None, None, False)
     return multi_puff.model_puff_core(src, met)
示例#5
0
import multi_puff
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
示例#6
0
 def prep_model(self, source, met):
     src = input_info.source_info(source, None, None, False)
     return multi_puff.model_puff_core(src, met)