def test_set_included_three_times_one_overlapping_over_all_sets_QuenchFrontConst(self):
        QuenchFront = QuenchFrontConst
        quench_fronts = [QuenchFront(10.0, 80.0, "1", Geometry, factory=None, testunit=True),
                         QuenchFront(30.0, 60.0, "2", Geometry, factory=None, testunit=True),
                         QuenchFront(20.0, 70.0, "3", Geometry, factory=None, testunit=True),
                         QuenchFront(40.0, 50.0, "4", Geometry, factory=None, testunit=True)]
        result = QuenchMerge.quench_merge(quench_fronts=quench_fronts, testunit=True)

        expected_result = [QuenchFront(10.0, 80.0, "2_3_1_4", Geometry, factory=None, testunit=True)]
        expected_result_sorted = sort_quench_fronts(quench_fronts=expected_result)

        for res in range(len(result)):
            self.assertEqual(result[res].x_down, expected_result_sorted[res].x_down)
            self.assertEqual(result[res].x_up, expected_result_sorted[res].x_up)
    def test_set_included_four_times_QuenchFrontNum(self):
        QuenchFront = QuenchFrontNum
        quench_fronts = [QuenchFront(10.0, 80.0, "1", Geometry, factory=None, testunit=True),
                         QuenchFront(30.0, 60.0, "2", Geometry, factory=None, testunit=True),
                         QuenchFront(20.0, 70.0, "3", Geometry, factory=None, testunit=True),
                         QuenchFront(40.0, 50.0, "4", Geometry, factory=None, testunit=True)]
        result = QuenchMerge.quench_merge(quench_fronts=quench_fronts, testunit=True)

        expected_result = [QuenchFront(10.0, 80.0, "1_3_2_4", Geometry, factory=None, testunit=True)]
        expected_result_sorted = sort_quench_fronts(quench_fronts=expected_result)

        for res in range(len(result)):
            self.assertEqual(result[res].x_down, expected_result_sorted[res].x_down)
            self.assertEqual(result[res].x_up, expected_result_sorted[res].x_up)
    def estimate_quench_velocity(self):
        if self.is_all_coil_quenched is False:
            magnetic_map = self.magnetic_map.im_short_mag_dict

            # calculate quench propagation
            for qf in self.quench_fronts:
                qf.return_quench_front_position(
                    initial_time=self.time_step_vector[self.iteration[0] - 1],
                    final_time=self.time_step_vector[self.iteration[0]],
                    min_length=self.min_coil_length,
                    max_length=self.max_coil_length,
                    mag_field_map=magnetic_map,
                    current=self.circuit.current[0])

            # what if quench fronts meet
            self.quench_fronts = QuenchMerge.quench_merge(self.quench_fronts)