if not os.path.exists(mat_file_name):
            print "Given result file does not exist: {0}".format(sys.argv[1])
            os._exit(3)

        ## First limit part
        limit_dict, filter = read_limits()
        ## End of first limit part

        ## Post processing part
        filter.append("road_Wheel_Load_Both_Sides.vehicleSpeed")

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        metrics = {}

        speed_array = pp.data_array("road_Wheel_Load_Both_Sides.vehicleSpeed")
        time_array = pp.time_array()

        n = len(speed_array)
        acc10kph = -1
        points = range(n)
        for i in points:
            if speed_array[i] < -10:
                acc10kph = time_array[i]
                break

        max_rev_speed = speed_array[-1]

        points.reverse()
        tol = 0.001
        time_to_max = 0
 # loads results with the filtered out variables (and 'time' which is default)
 pp = PostProcess(mat_file_name, filter)
 t = pp.time
 # Liters of fuel used per 100km
 #volume_var_name = [var_name for var_name in filter if var_name.endswith('tank.V')][0]
 #volume = pp.data_array(volume_var_name)
 fuel_used = 1 #(volume[0] - volume[-1])*1000
 distance_covered_m = pp.integrate('driver_Land_Profile.driver_control.error_current.u2')
 if distance_covered_m != 0:
     fuel_consumption = fuel_used/(distance_covered_m*1000*100)
 else:
     fuel_consumption = -1
 #vehicle_speed_SI = pp.data_array('driver_Land_Profile.driver_control.error_current.u2')
 
 # Deviation from requested speed
 e = pp.data_array('driver_Land_Profile.driver_control.error_current.y')
 
 index_neg = np.where(e < 0)[0]
 index_pos = np.where(e > 0)[0]
 
 rms_tot = RMS(e, t, t[-1])
 rms_e_neg = RMS(e[index_neg], t[index_neg], t[-1])
 rms_e_pos = RMS(e[index_pos], t[index_pos], t[-1])
 
 avg_response = 1 / (1 + rms_tot)
 acc_response = 1 / (1 + rms_e_neg)
 dec_response = 1 / (1 + rms_e_pos)
 
 metrics = {}
 #metrics.update({'VehicleSpeed': {'value': pp.global_abs_max("road_Wheel_Load_Both_Sides.vehicleSpeed"), 'unit': 'kph'}})
 metrics.update({'DistanceCovered': {'value': distance_covered_m/1000, 'unit': 'km'}})
        if not os.path.exists(mat_file_name):
            print 'Given result file does not exist: {0}'.format(sys.argv[1])
            os._exit(3)

        ## First limit part
        limit_dict, filter = read_limits()
        ## End of first limit part

        ## Post processing part
        filter.append('road_Wheel_Load_Both_Sides.vehicleSpeed')

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        metrics = {}

        speed_array = pp.data_array("road_Wheel_Load_Both_Sides.vehicleSpeed")
        time_array = pp.time_array()

        n = len(speed_array)
        acc10kph = -1
        points = range(n)
        for i in points:
            if speed_array[i] < -10:
                acc10kph = time_array[i]
                break

        max_rev_speed = speed_array[-1]

        points.reverse()
        tol = 0.001
        time_to_max = 0
Example #4
0
            os._exit(3)

        ## First limit part
        limit_dict, filter = read_limits()
        ## End of first limit part

        ## Post processing part
        filter.append('PositionSensor.s')
        filter.append('SpeedSensor.v')
        filter.append('AccSensor.a')

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        metrics = {}
        time_array = pp.time_array()
        velocity_array = pp.data_array('SpeedSensor.v')
        acceleration_array = pp.data_array('AccSensor.a')
        position = pp.last_value('PositionSensor.s')

        zero = pp.find_zero(velocity_array, acceleration_array, time_array)
        if zero != -1:
            time_to_zero = zero
            stopped_moving = True
        else:
            time_to_zero = 10000
            stopped_moving = False

        metrics.update({'Time_to_Zero': {'value': time_to_zero, 'unit': 's'}})
        metrics.update(
            {'Stopped_Moving': {
                'value': stopped_moving,
        ## First limit part
        limit_dict, filter = read_limits()
        ## End of first limit part

        
        ## Post processing part
        filter.append('PositionSensor.s')
        filter.append('SpeedSensor.v')
        filter.append('AccSensor.a')

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        metrics = {}
        time_array = pp.time_array()
        velocity_array = pp.data_array('SpeedSensor.v')
        acceleration_array = pp.data_array('AccSensor.a')
        position = pp.last_value('PositionSensor.s')

	
		
        zero = pp.find_zero(velocity_array,acceleration_array,time_array)
        if zero != -1:
			time_to_zero = zero
			stopped_moving = True
        else:
            time_to_zero = 10000    
            stopped_moving = False

        
        metrics.update({'Time_to_Zero': {'value': time_to_zero, 'unit': 's'}})
Example #6
0
            'driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.y'
        )
        filter.append(
            'driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2'
        )

        #filter.append('road_Wheel_Load_Both_Sides.ModelicaModel_road_Wheel_Load_Both_Sides.Accel_40kph')

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        t = pp.time
        # Liters of fuel used per 100km
        volume_var_name = [
            var_name for var_name in filter if var_name.endswith('tank.V')
        ][0]
        volume = pp.data_array(volume_var_name)
        fuel_used = (volume[0] - volume[-1]) * 1000
        distance_covered_m = pp.integrate(
            'driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2'
        )
        if distance_covered_m != 0:
            fuel_consumption = fuel_used / (distance_covered_m * 1000 * 100)
        else:
            fuel_consumption = -1
        #vehicle_speed_SI = pp.data_array('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2')

        # Deviation from requested speed
        e = pp.data_array(
            'driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.y'
        )
        limit_dict, filter = read_limits()
        ## End of first limit part
        
        ## Post processing part
        filter.append('road_Wheel_Load_Both_Sides.ModelicaModel_road_Wheel_Load_Both_Sides.vehicleSpeed')
        filter.append('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.y')
        filter.append('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2')
        
        #filter.append('road_Wheel_Load_Both_Sides.ModelicaModel_road_Wheel_Load_Both_Sides.Accel_40kph')

        # loads results with the filtered out variables (and 'time' which is default)
        pp = PostProcess(mat_file_name, filter)
        t = pp.time
        # Liters of fuel used per 100km
        volume_var_name = [var_name for var_name in filter if var_name.endswith('tank.V')][0]
        volume = pp.data_array(volume_var_name)
        fuel_used = (volume[0] - volume[-1])*1000
        distance_covered_m = pp.integrate('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2')
        if distance_covered_m != 0:
            fuel_consumption = fuel_used/(distance_covered_m*1000*100)
        else:
            fuel_consumption = -1
        #vehicle_speed_SI = pp.data_array('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.u2')
        
        # Deviation from requested speed
        e = pp.data_array('driver_Land_Profile.ModelicaModel_Driver_Land_Profile.driver_control.error_current.y')
        
        index_neg = np.where(e < 0)[0]
        index_pos = np.where(e > 0)[0]
        
        rms_tot = RMS(e, t, t[-1])
        pp = PostProcess(mat_file_name, filter)
        t = pp.time
        # Liters of fuel used per 100km
        #volume_var_name = [var_name for var_name in filter if var_name.endswith('tank.V')][0]
        #volume = pp.data_array(volume_var_name)
        fuel_used = 1  #(volume[0] - volume[-1])*1000
        distance_covered_m = pp.integrate(
            'driver_Land_Profile.driver_control.error_current.u2')
        if distance_covered_m != 0:
            fuel_consumption = fuel_used / (distance_covered_m * 1000 * 100)
        else:
            fuel_consumption = -1
        #vehicle_speed_SI = pp.data_array('driver_Land_Profile.driver_control.error_current.u2')

        # Deviation from requested speed
        e = pp.data_array('driver_Land_Profile.driver_control.error_current.y')

        index_neg = np.where(e < 0)[0]
        index_pos = np.where(e > 0)[0]

        rms_tot = RMS(e, t, t[-1])
        rms_e_neg = RMS(e[index_neg], t[index_neg], t[-1])
        rms_e_pos = RMS(e[index_pos], t[index_pos], t[-1])

        avg_response = 1 / (1 + rms_tot)
        acc_response = 1 / (1 + rms_e_neg)
        dec_response = 1 / (1 + rms_e_pos)

        metrics = {}
        #metrics.update({'VehicleSpeed': {'value': pp.global_abs_max("road_Wheel_Load_Both_Sides.vehicleSpeed"), 'unit': 'kph'}})
        metrics.update({