bluemira.structural.symmetry ============================ .. py:module:: bluemira.structural.symmetry .. autoapi-nested-parse:: Symmetry boundary conditions Classes ------- .. autoapisummary:: bluemira.structural.symmetry.CyclicSymmetry Module Contents --------------- .. py:class:: CyclicSymmetry(geometry: bluemira.structural.geometry.Geometry, cycle_sym_ids: list[list[int], list[int]]) Utility class for implementing a cyclical symmetry boundary condition in FiniteElementModel :param geometry: The geometry upon which to apply the cyclic symmetry :param cycle_sym_ids: The list of left and right DOF ids .. py:attribute:: geometry .. py:attribute:: cycle_sym_ids .. py:attribute:: t_block :value: None .. py:attribute:: t_matrix :value: None .. py:attribute:: left_nodes :value: None .. py:attribute:: right_nodes :value: None .. py:attribute:: theta :value: None .. py:attribute:: n :value: None .. py:attribute:: axis :value: None .. py:attribute:: selections :value: None .. py:method:: _prepare_cyclic_symmetry() .. py:method:: _build_t_matrix(n) .. py:method:: apply_cyclic_symmetry(k: numpy.ndarray, p: numpy.ndarray) -> tuple[numpy.ndarray, numpy.ndarray] Apply the cyclic symmetry condition to the matrices. Will simply return k and p if no cyclic symmetry is detected in the FiniteElementModel. :param k: The geometry stiffness matrix :param p: The model load vector :returns: * *k* -- The partitioned block stiffness matrix * *p* -- The partitioned block load vector .. py:method:: reorder(u_original: numpy.ndarray) -> numpy.ndarray Re-order the displacement vector correctly, so that the deflections may be applied to the correct nodes. If not cyclic symmetry is detected in the FiniteElementModel, simply returns u_original. :param u_original: The original deflection vector :rtype: The re-ordered deflection vector