sfepy.discrete.common.fields module¶
-
class
sfepy.discrete.common.fields.
Field
(**kwargs)[source]¶ Base class for fields.
-
create_eval_mesh
()[source]¶ Create a mesh for evaluating the field. The default implementation returns None, because this mesh is for most fields the same as the one created by Field.create_mesh().
-
evaluate_at
(coors, source_vals, mode='val', strategy='general', close_limit=0.1, get_cells_fun=None, cache=None, ret_cells=False, ret_status=False, ret_ref_coors=False, verbose=False)[source]¶ Evaluate source DOF values corresponding to the field in the given coordinates using the field interpolation.
Parameters: coors : array, shape
(n_coor, dim)
The coordinates the source values should be interpolated into.
source_vals : array, shape
(n_nod, n_components)
The source DOF values corresponding to the field.
mode : {‘val’, ‘grad’}, optional
The evaluation mode: the field value (default) or the field value gradient.
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_limit : float, optional
The maximum limit distance of a point from the closest element allowed for extrapolation.
get_cells_fun : callable, 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.cache : Struct, 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. See
Field.get_evaluate_cache()
.ret_ref_coors : bool, optional
If True, return also the found reference element coordinates.
ret_status : bool, optional
If True, return also the enclosing cell status for each point.
ret_cells : bool, optional
If True, return also the cell indices the coordinates are in.
verbose : bool
If False, reduce verbosity.
Returns: vals : array
The interpolated values with shape
(n_coor, n_components)
or gradients with shape(n_coor, n_components, dim)
according to the mode. If ret_status is False, the values where the status is greater than one are set tonumpy.nan
.ref_coors : array
The found reference element coordinates, if ret_ref_coors is True.
cells : array
The cell indices, if ret_ref_coors or ret_cells or ret_status are True.
status : array
The status, if ret_ref_coors or ret_status are True, with the following meaning: 0 is success, 1 is extrapolation within close_limit, 2 is extrapolation outside close_limit, 3 is failure, 4 is failure due to non-convergence 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.
-
static
from_args
(name, dtype, shape, region, approx_order=1, space='H1', poly_space_base='lagrange')[source]¶ Create a Field subclass instance corresponding to a given space.
Parameters: name : str
The field name.
dtype : numpy.dtype
The field data type: float64 or complex128.
shape : int/tuple/str
The field shape: 1 or (1,) or ‘scalar’, space dimension (2, or (2,) or 3 or (3,)) or ‘vector’, or a tuple. The field shape determines the shape of the FE base functions and is related to the number of components of variables and to the DOF per node count, depending on the field kind.
region : Region
The region where the field is defined.
approx_order : int/str
The FE approximation order, e.g. 0, 1, 2, ‘1B’ (1 with bubble).
space : str
The function space name.
poly_space_base : str
The name of polynomial space base.
Notes
Assumes one cell type for the whole region!
-
static
from_conf
(conf, regions)[source]¶ Create a Field subclass instance based on the configuration.
-
get_mapping
(region, integral, integration, get_saved=False, return_key=False)[source]¶ For given region, integral and integration type, get a reference mapping, i.e. jacobians, element volumes and base function derivatives for Volume-type geometries, and jacobians, normals and base function derivatives for Surface-type geometries corresponding to the field approximation.
The mappings are cached in the field instance in mappings attribute. The mappings can be saved to mappings0 using Field.save_mappings. The saved mapping can be retrieved by passing get_saved=True. If the required (saved) mapping is not in cache, a new one is created.
Returns: geo : CMapping instance
The reference mapping.
mapping : VolumeMapping or SurfaceMapping instance
The mapping.
key : tuple
The key of the mapping in mappings or mappings0.
-