def create_conn_graph(self, verbose=True): """ Create a graph of mesh connectivity. Returns ------- graph : csr_matrix The mesh connectivity graph as a SciPy CSR matrix. """ from sfepy.discrete.common.extmods.cmesh import create_mesh_graph shape = (self.n_nod, self.n_nod) output('graph shape:', shape, verbose=verbose) if nm.prod(shape) == 0: output('no graph (zero size)!', verbose=verbose) return None output('assembling mesh graph...', verbose=verbose) timer = Timer(start=True) conn = self.get_conn(self.descs[0]) nnz, prow, icol = create_mesh_graph(shape[0], shape[1], 1, [conn], [conn]) output('...done in %.2f s' % timer.stop(), verbose=verbose) output('graph nonzeros: %d (%.2e%% fill)' \ % (nnz, float(nnz) / nm.prod(shape)), verbose=verbose) data = nm.ones((nnz,), dtype=nm.bool) graph = sp.csr_matrix((data, icol, prow), shape) return graph
def create_conn_graph(self, verbose=True): """ Create a graph of mesh connectivity. Returns ------- graph : csr_matrix The mesh connectivity graph as a SciPy CSR matrix. """ from sfepy.discrete.common.extmods.cmesh import create_mesh_graph shape = (self.n_nod, self.n_nod) output('graph shape:', shape, verbose=verbose) if nm.prod(shape) == 0: output('no graph (zero size)!', verbose=verbose) return None output('assembling mesh graph...', verbose=verbose) tt = time.clock() conn = self.get_conn(self.descs[0]) nnz, prow, icol = create_mesh_graph(shape[0], shape[1], 1, [conn], [conn]) output('...done in %.2f s' % (time.clock() - tt), verbose=verbose) output('graph nonzeros: %d (%.2e%% fill)' \ % (nnz, float(nnz) / nm.prod(shape))) data = nm.ones((nnz,), dtype=nm.bool) graph = sp.csr_matrix((data, icol, prow), shape) return graph
def create_matrix_graph(self, any_dof_conn=False, rdcs=None, cdcs=None, shape=None, active_only=True, verbose=True): """ Create tangent matrix graph, i.e. preallocate and initialize the sparse storage needed for the tangent matrix. Order of DOF connectivities is not important. Parameters ---------- any_dof_conn : bool By default, only volume DOF connectivities are used, with the exception of trace surface DOF connectivities. If True, any kind of DOF connectivities is allowed. rdcs, cdcs : arrays, optional Additional row and column DOF connectivities, corresponding to the variables used in the equations. shape : tuple, optional The required shape, if it is different from the shape determined by the equations variables. This may be needed if additional row and column DOF connectivities are passed in. active_only : bool If True, the matrix graph has reduced size and is created with the reduced (active DOFs only) numbering. verbose : bool If False, reduce verbosity. Returns ------- matrix : csr_matrix The matrix graph in the form of a CSR matrix with preallocated structure and zero data. """ if not self.variables.has_virtuals(): output('no matrix (no test variables)!') return None shape = get_default(shape, self.variables.get_matrix_shape()) output('matrix shape:', shape, verbose=verbose) if nm.prod(shape) == 0: output('no matrix (zero size)!') return None rdcs, cdcs = self.get_graph_conns(any_dof_conn=any_dof_conn, rdcs=rdcs, cdcs=cdcs, active_only=active_only) if not len(rdcs): output('no matrix (empty dof connectivities)!') return None output('assembling matrix graph...', verbose=verbose) tt = time.clock() nnz, prow, icol = create_mesh_graph(shape[0], shape[1], len(rdcs), rdcs, cdcs) output('...done in %.2f s' % (time.clock() - tt), verbose=verbose) output('matrix structural nonzeros: %d (%.2e%% fill)' \ % (nnz, float(nnz) / nm.prod(shape)), verbose=verbose) data = nm.zeros((nnz, ), dtype=self.variables.dtype) matrix = sp.csr_matrix((data, icol, prow), shape) return matrix
def create_matrix_graph(self, any_dof_conn=False, rdcs=None, cdcs=None, shape=None, active_only=True, verbose=True): """ Create tangent matrix graph, i.e. preallocate and initialize the sparse storage needed for the tangent matrix. Order of DOF connectivities is not important. Parameters ---------- any_dof_conn : bool By default, only volume DOF connectivities are used, with the exception of trace surface DOF connectivities. If True, any kind of DOF connectivities is allowed. rdcs, cdcs : arrays, optional Additional row and column DOF connectivities, corresponding to the variables used in the equations. shape : tuple, optional The required shape, if it is different from the shape determined by the equations variables. This may be needed if additional row and column DOF connectivities are passed in. active_only : bool If True, the matrix graph has reduced size and is created with the reduced (active DOFs only) numbering. verbose : bool If False, reduce verbosity. Returns ------- matrix : csr_matrix The matrix graph in the form of a CSR matrix with preallocated structure and zero data. """ if not self.variables.has_virtuals(): output('no matrix (no test variables)!') return None shape = get_default(shape, self.variables.get_matrix_shape()) output('matrix shape:', shape, verbose=verbose) if nm.prod(shape) == 0: output('no matrix (zero size)!') return None rdcs, cdcs = self.get_graph_conns(any_dof_conn=any_dof_conn, rdcs=rdcs, cdcs=cdcs, active_only=active_only) if not len(rdcs): output('no matrix (empty dof connectivities)!') return None output('assembling matrix graph...', verbose=verbose) tt = time.clock() nnz, prow, icol = create_mesh_graph(shape[0], shape[1], len(rdcs), rdcs, cdcs) output('...done in %.2f s' % (time.clock() - tt), verbose=verbose) output('matrix structural nonzeros: %d (%.2e%% fill)' \ % (nnz, float(nnz) / nm.prod(shape)), verbose=verbose) data = nm.zeros((nnz,), dtype=self.variables.dtype) matrix = sp.csr_matrix((data, icol, prow), shape) return matrix
def surface_graph(surf_faces, n_nod): nnz, prow, icol = create_mesh_graph(n_nod, n_nod, len(surf_faces), surf_faces, surf_faces) data = nm.empty((nnz, ), dtype=nm.int32) data.fill(2) return sp.csr_matrix((data, icol, prow), (n_nod, n_nod))
def surface_graph(surf_faces, n_nod): nnz, prow, icol = create_mesh_graph(n_nod, n_nod, len(surf_faces), surf_faces, surf_faces) data = nm.empty((nnz,), dtype=nm.int32) data.fill(2) return sp.csr_matrix((data, icol, prow), (n_nod, n_nod))