sfepy.discrete.common.global_interp module¶
Global interpolation functions.

sfepy.discrete.common.global_interp.
get_potential_cells
(coors, cmesh, centroids=None, extrapolate=True)[source]¶ Get cells that potentially contain points with the given physical coordinates.
 Parameters
 coorsarray
The physical coordinates.
 cmeshCMesh instance
The cmesh defining the cells.
 centroidsarray, optional
The centroids of the cells.
 extrapolatebool
If True, even the points that are surely outside of the cmesh are considered and assigned potential cells.
 Returns
 potential_cellsarray
The indices of the cells that potentially contain the points.
 offsetsarray
The offsets into potential_cells for each point: a point
ip
is potentially in cellspotential_cells[offsets[ip]:offsets[ip+1]]
.

sfepy.discrete.common.global_interp.
get_ref_coors
(field, coors, strategy='general', close_limit=0.1, get_cells_fun=None, cache=None, verbose=False)[source]¶ Get reference element coordinates and elements corresponding to given physical coordinates.
 Parameters
 fieldField instance
The field defining the approximation.
 coorsarray
The physical coordinates.
 strategy{‘general’, ‘convex’}, optional
The strategy for finding the elements that contain the coordinates. For convex meshes, the ‘convex’ strategy might be faster than the ‘general’ one.
 close_limitfloat, optional
The maximum limit distance of a point from the closest element allowed for extrapolation.
 get_cells_funcallable, optional
If given, a function with signature
get_cells_fun(coors, cmesh, **kwargs)
returning cells and offsets that potentially contain points with the coordinates coors. Applicable only when strategy is ‘general’. When not given,get_potential_cells()
is used. cacheStruct, optional
To speed up a sequence of evaluations, the field mesh and other data can be cached. Optionally, the cache can also contain the reference element coordinates as cache.ref_coors, cache.cells and cache.status, if the evaluation occurs in the same coordinates repeatedly. In that case the mesh related data are ignored.
 verbosebool
If False, reduce verbosity.
 Returns
 ref_coorsarray
The reference coordinates.
 cellsarray
The cell indices corresponding to the reference coordinates.
 statusarray
The status: 0 is success, 1 is extrapolation within close_limit, 2 is extrapolation outside close_limit, 3 is failure, 4 is failure due to nonconvergence of the Newton iteration in tensor product cells. If close_limit is 0, then for the ‘general’ strategy the status 5 indicates points outside of the field domain that had no potential cells.

sfepy.discrete.common.global_interp.
get_ref_coors_convex
(field, coors, close_limit=0.1, cache=None, verbose=False)[source]¶ Get reference element coordinates and elements corresponding to given physical coordinates.
 Parameters
 fieldField instance
The field defining the approximation.
 coorsarray
The physical coordinates.
 close_limitfloat, optional
The maximum limit distance of a point from the closest element allowed for extrapolation.
 cacheStruct, optional
To speed up a sequence of evaluations, the field mesh and other data can be cached. Optionally, the cache can also contain the reference element coordinates as cache.ref_coors, cache.cells and cache.status, if the evaluation occurs in the same coordinates repeatedly. In that case the mesh related data are ignored.
 verbosebool
If False, reduce verbosity.
 Returns
 ref_coorsarray
The reference coordinates.
 cellsarray
The cell indices corresponding to the reference coordinates.
 statusarray
The status: 0 is success, 1 is extrapolation within close_limit, 2 is extrapolation outside close_limit, 3 is failure, 4 is failure due to nonconvergence of the Newton iteration in tensor product cells.
Notes
Outline of the algorithm for finding xi such that X(xi) = P:
make inverse connectivity  for each vertex have cells it is in.
find the closest vertex V.
choose initial cell: i0 = first from cells incident to V.
while not P in C_i, change C_i towards P, check if P in new C_i.

sfepy.discrete.common.global_interp.
get_ref_coors_general
(field, coors, close_limit=0.1, get_cells_fun=None, cache=None, verbose=False)[source]¶ Get reference element coordinates and elements corresponding to given physical coordinates.
 Parameters
 fieldField instance
The field defining the approximation.
 coorsarray
The physical coordinates.
 close_limitfloat, optional
The maximum limit distance of a point from the closest element allowed for extrapolation.
 get_cells_funcallable, optional
If given, a function with signature
get_cells_fun(coors, cmesh, **kwargs)
returning cells and offsets that potentially contain points with the coordinates coors. When not given,get_potential_cells()
is used. cacheStruct, optional
To speed up a sequence of evaluations, the field mesh and other data can be cached. Optionally, the cache can also contain the reference element coordinates as cache.ref_coors, cache.cells and cache.status, if the evaluation occurs in the same coordinates repeatedly. In that case the mesh related data are ignored.
 verbosebool
If False, reduce verbosity.
 Returns
 ref_coorsarray
The reference coordinates.
 cellsarray
The cell indices corresponding to the reference coordinates.
 statusarray
The status: 0 is success, 1 is extrapolation within close_limit, 2 is extrapolation outside close_limit, 3 is failure, 4 is failure due to nonconvergence of the Newton iteration in tensor product cells. If close_limit is 0, then status 5 indicates points outside of the field domain that had no potential cells.