bluemira.structural.node ======================== .. py:module:: bluemira.structural.node .. autoapi-nested-parse:: Finite element Node object Classes ------- .. autoapisummary:: bluemira.structural.node.Node Functions --------- .. autoapisummary:: bluemira.structural.node.get_midpoint Module Contents --------------- .. py:class:: Node(x: float, y: float, z: float, id_number: int) A 3-D node point :param x: The node global x coordinate :param y: The node global y coordinate :param z: The node global z coordinate :param id_number: The node number in the finite element model .. py:attribute:: __slots__ :value: ('connections', 'displacements', 'id_number', 'loads', 'reactions', 'supports', 'symmetry', 'x',... .. py:attribute:: x .. py:attribute:: y .. py:attribute:: z .. py:attribute:: id_number .. py:attribute:: loads :value: [] .. py:attribute:: supports .. py:attribute:: symmetry :value: False .. py:attribute:: displacements .. py:attribute:: reactions .. py:attribute:: connections .. py:property:: xyz :type: numpy.ndarray Coordinate vector :rtype: The x-y-z coordinate vector of the Node (3) .. py:method:: distance_to_other(node) -> float Calculates the distance to another Node :param node: The other node :rtype: The absolute distance between the two nodes .. py:method:: add_load(load: bluemira.structural.loads.Load | dict[str, float | str]) Applies a load to the Node object. :param load: The dictionary of nodal load values (always in global coordinates) .. py:method:: clear_loads() Clear all loads and displacements applied to the Node .. py:method:: clear_supports() Clears all supported DOFs applied to the Node .. py:method:: add_support(supports: numpy.ndarray) Define a support condition at the Node :param supports: A boolean vector of the support DOFs, [dx, dy, dz, rx, ry, rz]: True == supported False == free .. py:method:: add_connection(elem_id: int) Add a connection to the Node. :param elem_id: The Element id_number which is connected to this Node .. py:method:: remove_connection(elem_id: int) Remove a connection to the Node. :param elem_id: The Element id_number which is to be disconnected from this Node .. py:method:: p_vector() -> numpy.ndarray Global nodal force vector :returns: **nfv** -- The global nodal force vector :rtype: np.array(6) :raises StructuralError: Cannot apply load type to a node .. py:method:: __eq__(other) -> bool Checks the Node for equality to another Node. In practice this is used to check for Node coincidence. :param other: The other Node to check for equality :rtype: Whether or not the nodes are coincident .. py:attribute:: __hash__ :value: None .. py:function:: get_midpoint(node1: Node, node2: Node) -> tuple[float, float, float] Calculates the mid-point between two 3-D nodes :param node1: First node :param node2: Second node :rtype: The coordinates of the mid-point .. rubric:: Notes The midpoint coordinates are given by: .. math:: M_x = \frac{x_1 + x_2}{2}, \quad M_y = \frac{y_1 + y_2}{2}, \quad M_z = \frac{z_1 + z_2}{2}