sfepy.discrete.fem.utils module

sfepy.discrete.fem.utils.compute_nodal_edge_dirs(nodes, region, field, return_imap=False)[source]

Nodal edge directions are computed by simple averaging of direction vectors of edges a node is contained in. Edges are assumed to be straight and a node must be on a single edge (a border node) or shared by exactly two edges.

sfepy.discrete.fem.utils.compute_nodal_normals(nodes, region, field, return_imap=False)[source]

Nodal normals are computed by simple averaging of element normals of elements every node is contained in.

sfepy.discrete.fem.utils.extend_cell_data(data, domain, rname, val=None, is_surface=False, average_surface=True)[source]

Extend cell data defined in a region to the whole domain.

data : array

The data defined in the region.

domain : FEDomain instance

The FE domain.

rname : str

The region name.

val : float, optional

The value for filling cells not covered by the region. If not given, the smallest value in data is used.

is_surface : bool

If True, the data are defined on a surface region. In that case the values are averaged or summed into the cells containing the region surface faces (a cell can have several faces of the surface), see average_surface.

average_surface : bool

If True, the data defined on a surface region are averaged, otherwise the data are summed.

edata : array

The data extended to all domain elements.

sfepy.discrete.fem.utils.get_edge_paths(graph, mask)[source]

Get all edge paths in a graph with non-masked vertices. The mask is updated.


Get a reasonable minimal value of DOFs suitable for extending over a whole domain.


Return the inverse of remap, i.e. a mapping from a sub-range indices to a full range, see prepare_remap().

sfepy.discrete.fem.utils.prepare_remap(indices, n_full)[source]

Prepare vector for remapping range [0, n_full] to its subset given by indices.

sfepy.discrete.fem.utils.prepare_translate(old_indices, new_indices)[source]

Prepare vector for translating old_indices to new_indices.

translate : array

The translation vector. Then new_ar = translate[old_ar].

sfepy.discrete.fem.utils.refine_mesh(filename, level)[source]

Uniformly refine level-times a mesh given by filename.

The refined mesh is saved to a file with name constructed from base name of filename and level-times appended ‘_r’ suffix.

filename : str

The mesh file name.

level : int

The refinement level.