Source code for pyleecan.Methods.Mesh.MeshMat.clear_node

# -*- coding: utf-8 -*-
import numpy as np
import copy

from pyleecan.Classes.CellMat import CellMat
from pyleecan.Classes.NodeMat import NodeMat


def clear_node(self):
    """Remove non-used nodes based on cells connectivity.

    Parameters
    ----------
    self : MeshMat
        an Mesh object

    Returns
    -------

    """

    coord_init = self.get_node()
    node_indice_init = self.get_node_indice()
    connect_dict, nb_cell, indices = self.get_cell()

    node_indice = list()
    for key in connect_dict:
        node_indice.extend(np.unique(connect_dict[key]))

    node_indice = np.unique(node_indice)
    common, index1, index2 = np.intersect1d(
        node_indice, node_indice_init, return_indices=True
    )

    if not np.array_equal(node_indice, common):
        raise ValueError

    self.node = NodeMat(
        coordinate=coord_init[index2, :],
        nb_node=len(index2),
        indice=node_indice,
    )