def edge_refine_triangulation_by_triangles(self, triangles):
        """
        return points defining a refined triangulation obtained by bisection of all edges
        in the triangulation that are associated with the triangles in the list
        of indices provided.

        Notes
        -----
         The triangles are here represented as a single index.
         The vertices of triangle i are given by self.simplices[i].
        """

        ## Note there should be no duplicates in the list of triangles
        ## but because we remove duplicates from the list of all segments,
        ## there is no pressing need to check this.

        # identify the segments

        simplices = self.simplices
        segments = set()

        for index in np.array(triangles).reshape(-1):
            tri = simplices[index]
            segments.add( min( tuple((tri[0], tri[1])), tuple((tri[0], tri[1]))) )
            segments.add( min( tuple((tri[1], tri[2])), tuple((tri[2], tri[1]))) )
            segments.add( min( tuple((tri[0], tri[2])), tuple((tri[2], tri[0]))) )

        segs = np.array(list(segments))

        xi, yi = self.segment_midpoints(segs)

        x_v1 = np.concatenate((self.x, xi), axis=0)
        y_v1 = np.concatenate((self.y, yi), axis=0)

        return x_v1, y_v1
def edge_refine_triangulation_by_triangles ( self , triangles ) : simplices = self . simplices segments = set ( ) for index in np . array ( triangles ) . reshape ( - 1 ) : tri = simplices [ index ] segments . add ( min ( tuple ( ( tri [ 0 ] , tri [ 1 ] ) ) , tuple ( ( tri [ 0 ] , tri [ 1 ] ) ) ) ) segments . add ( min ( tuple ( ( tri [ 1 ] , tri [ 2 ] ) ) , tuple ( ( tri [ 2 ] , tri [ 1 ] ) ) ) ) segments . add ( min ( tuple ( ( tri [ 0 ] , tri [ 2 ] ) ) , tuple ( ( tri [ 2 ] , tri [ 0 ] ) ) ) ) segs = np . array ( list ( segments ) ) xi , yi = self . segment_midpoints ( segs ) x_v1 = np . concatenate ( ( self . x , xi ) , axis = 0 ) y_v1 = np . concatenate ( ( self . y , yi ) , axis = 0 ) return x_v1 , y_v1
return points defining a refined triangulation obtained by bisection of all edges
        in the triangulation that are associated with the triangles in the list
        of indices provided.

        Notes
        -----
         The triangles are here represented as a single index.
         The vertices of triangle i are given by self.simplices[i].