sfepy.discrete.evaluate module

class sfepy.discrete.evaluate.Evaluator(problem, matrix_hook=None)[source]

This class provides the functions required by a nonlinear solver for a given problem.

eval_residual(vec, is_full=False)[source]
eval_tangent_matrix(vec, mtx=None, is_full=False)[source]
make_full_vec(vec)[source]
static new_ulf_iteration(problem, nls, vec, it, err, err0)[source]
sfepy.discrete.evaluate.apply_ebc_to_matrix(mtx, ebc_rows, epbc_rows=None)[source]

Apply E(P)BC to matrix rows: put 1 to the diagonal for EBC DOFs, 1 to the diagonal for master EPBC DOFs, -1 to the [master, slave] entries. It is assumed, that the matrix contains zeros in EBC and master EPBC DOFs rows and columns.

When used within a nonlinear solver, the actual values on the EBC DOFs diagonal positions do not matter, as the residual is zero at those positions.

sfepy.discrete.evaluate.assemble_by_blocks(conf_equations, problem, ebcs=None, epbcs=None, dw_mode='matrix', active_only=True)[source]

Instead of a global matrix, return its building blocks as defined in conf_equations. The name and row/column variables of each block have to be encoded in the equation’s name, as in:

conf_equations = {
  'A,v,u' : "dw_lin_elastic.i1.Y2( inclusion.D, v, u )",
}

Notes

ebcs, epbcs must be either lists of BC names, or BC configuration dictionaries.

sfepy.discrete.evaluate.create_evaluable(expression, fields, materials, variables, integrals, regions=None, ebcs=None, epbcs=None, lcbcs=None, ts=None, functions=None, auto_init=False, mode='eval', extra_args=None, active_only=True, eterm_options=None, verbose=True, kwargs=None)[source]

Create evaluable object (equations and corresponding variables) from the expression string.

Parameters:
expressionstr

The expression to evaluate.

fieldsdict

The dictionary of fields used in variables.

materialsMaterials instance

The materials used in the expression.

variablesVariables instance

The variables used in the expression.

integralsIntegrals instance

The integrals to be used.

regionsRegion instance or list of Region instances

The region(s) to be used. If not given, the regions defined within the fields domain are used.

ebcsConditions instance, optional

The essential (Dirichlet) boundary conditions for ‘weak’ mode.

epbcsConditions instance, optional

The periodic boundary conditions for ‘weak’ mode.

lcbcsConditions instance, optional

The linear combination boundary conditions for ‘weak’ mode.

tsTimeStepper instance, optional

The time stepper.

functionsFunctions instance, optional

The user functions for boundary conditions, materials etc.

auto_initbool

Set values of all variables to all zeros.

modeone of ‘eval’, ‘el_avg’, ‘qp’, ‘weak’

The evaluation mode - ‘weak’ means the finite element assembling, ‘qp’ requests the values in quadrature points, ‘el_avg’ element averages and ‘eval’ means integration over each term region.

extra_argsdict, optional

Extra arguments to be passed to terms in the expression.

active_onlybool

If True, in ‘weak’ mode, the (tangent) matrices and residual vectors (right-hand sides) contain only active DOFs.

eterm_optionsdict, optional

The einsum-based terms evaluation options.

verbosebool

If False, reduce verbosity.

kwargsdict, optional

The variables (dictionary of (variable name) : (Variable instance)) to be used in the expression.

Returns:
equationEquation instance

The equation that is ready to be evaluated.

variablesVariables instance

The variables used in the equation.

sfepy.discrete.evaluate.eval_equations(equations, variables, names=None, preserve_caches=False, mode='eval', dw_mode='vector', term_mode=None, active_only=True, any_dof_conn=False, verbose=True)[source]

Evaluate the equations.

Parameters:
equationsEquations instance

The equations returned by create_evaluable().

variablesVariables instance

The variables returned by create_evaluable().

namesstr or sequence of str, optional

Evaluate only equations of the given name(s).

preserve_cachesbool

If True, do not invalidate evaluate caches of variables.

modeone of ‘eval’, ‘el_avg’, ‘qp’, ‘weak’

The evaluation mode - ‘weak’ means the finite element assembling, ‘qp’ requests the values in quadrature points, ‘el_avg’ element averages and ‘eval’ means integration over each term region.

dw_mode‘vector’ or ‘matrix’

The assembling mode for ‘weak’ evaluation mode.

term_modestr

The term call mode - some terms support different call modes and depending on the call mode different values are returned.

active_onlybool

If True, in ‘weak’ mode, the (tangent) matrices and residual vectors (right-hand sides) contain only active DOFs.

any_dof_connbool

If True, in ‘weak’ mode and ‘matrix’ dw_mode, all DOF connectivities are used to pre-allocate the matrix graph. If False, only cell region connectivities are used.

verbosebool

If False, reduce verbosity.

Returns:
outdict or result

The evaluation result. In ‘weak’ mode it is the vector or sparse matrix, depending on dw_mode. Otherwise, it is a dict of results with equation names as keys or a single result for a single equation.

sfepy.discrete.evaluate.eval_in_els_and_qp(expression, iels, coors, fields, materials, variables, functions=None, mode='eval', term_mode=None, extra_args=None, active_only=True, verbose=True, kwargs=None)[source]

Evaluate an expression in given elements and points.

Parameters:
expressionstr

The expression to evaluate.

fieldsdict

The dictionary of fields used in variables.

materialsMaterials instance

The materials used in the expression.

variablesVariables instance

The variables used in the expression.

functionsFunctions instance, optional

The user functions for materials etc.

modeone of ‘eval’, ‘el_avg’, ‘qp’

The evaluation mode - ‘qp’ requests the values in quadrature points, ‘el_avg’ element averages and ‘eval’ means integration over each term region.

term_modestr

The term call mode - some terms support different call modes and depending on the call mode different values are returned.

extra_argsdict, optional

Extra arguments to be passed to terms in the expression.

active_onlybool

If True, in ‘weak’ mode, the (tangent) matrices and residual vectors (right-hand sides) contain only active DOFs.

verbosebool

If False, reduce verbosity.

kwargsdict, optional

The variables (dictionary of (variable name) : (Variable instance)) to be used in the expression.

Returns:
outarray

The result of the evaluation.