function¶
-
class
nutils.function.
Lowerable
¶ Bases:
object
Protocol for lowering to
nutils.evaluable.Array
.-
lower
(self, *, transform_chains=(), coordinates=())¶ Lower this object to a
nutils.evaluable.Array
.- Parameters
transform_chains (sequence of
nutils.evaluable.TransformChain
objects) –coordinates (sequence of
nutils.evaluable.Array
objects) –
-
__weakref__
¶ list of weak references to the object (if defined)
-
-
class
nutils.function.
Array
(shape, dtype)¶ Bases:
nutils.function.Lowerable
Base class for array valued functions.
- Parameters
-
classmethod
cast
(_Array__value, dtype=None, ndim=None)¶ Cast a value to an
Array
.- Parameters
value (
Array
, or anumpy.ndarray
or similar) – The value to cast.
-
prepare_eval
(self, *, ndims=None, opposite=False, npoints=nutils.evaluable.NPoints<i:>)¶ Lower this object to a
nutils.evaluable.Array
.- Parameters
ndims (
int
) – The dimension of theSample
on which the resultingnutils.evaluable.Array
will be evaluated.opposite (
bool
) – Indicates which transform chain to use when evaluating the resultingArray
. This has no effect when there is only one transform chain.npoints (
int
ornutils.evaluable.Array
orNone
) – The length of the points axis orNone
if the result should not have a points axis.
-
__len__
(self)¶ Length of the first axis.
-
__iter__
(self)¶ Iterator over the first axis.
-
property
size
¶ The total number of elements in this array.
-
property
T
¶ The transposed array.
-
__sub__
(self, _Array__other)¶ See
subtract()
.
-
__rsub__
(self, _Array__other)¶ See
subtract()
.
-
__mul__
(self, _Array__other)¶ See
multiply()
.
-
__rmul__
(self, _Array__other)¶ See
multiply()
.
-
__floordiv__
(self, _Array__other)¶ See
floor_divide()
.
-
__rfloordiv__
(self, _Array__other)¶ See
floor_divide()
.
-
__pos__
(self)¶ Return self.
-
__neg__
(self)¶ See
negative()
.
-
normalized
(self, _Array__axis=- 1)¶ See
normalized()
.
-
curvature
(self, ndims=- 1)¶ See
curvature()
.
-
swapaxes
(self, _Array__axis1, _Array__axis2)¶ See
swapaxes()
.
-
transpose
(self, _Array__axes)¶ See
transpose()
.
-
nsymgrad
(self, _Array__geom, ndims=0)¶ See
nsymgrad()
.
-
eval
(self, **arguments)¶ Evaluate this function.
-
derivative
(self, _Array__var)¶ Differentiate this function to var.
-
replace
(self, _Array__arguments)¶ Return a copy with arguments applied.
-
contains
(self, _Array__name)¶ Test if target occurs in this function.
-
class
nutils.function.
Argument
(name, shape, *, dtype=<class 'float'>)¶ Bases:
nutils.function.Array
Array valued function argument.
- Parameters
-
nutils.function.
asarray
(__arg)¶ Cast a value to an
Array
.- Parameters
value (
Array
, or anumpy.ndarray
or similar) – The value to cast.- Returns
- Return type
-
nutils.function.
zeros
(shape, dtype=<class 'float'>)¶ Create a new
Array
of given shape and dtype, filled with zeros.
-
nutils.function.
ones
(shape, dtype=<class 'float'>)¶ Create a new
Array
of given shape and dtype, filled with ones.
-
nutils.function.
eye
(__n, dtype=<class 'float'>)¶ Create a 2-D
Array
with ones on the diagonal and zeros elsewhere.
-
nutils.function.
levicivita
(__n, dtype=<class 'float'>)¶ Create an n-D Levi-Civita symbol.
-
nutils.function.
add
(__left, __right)¶ Return the sum of the arguments, elementwise.
-
nutils.function.
subtract
(__left, __right)¶ Return the difference of the arguments, elementwise.
-
nutils.function.
negative
(__arg)¶ Return the negation of the argument, elementwise.
-
nutils.function.
multiply
(__left, __right)¶ Return the product of the arguments, elementwise.
-
nutils.function.
divide
(__dividend, __divisor)¶ Return the true-division of the arguments, elementwise.
-
nutils.function.
floor_divide
(__dividend, __divisor)¶ Return the floor-division of the arguments, elementwise.
-
nutils.function.
reciprocal
(__arg)¶ Return the reciprocal of the argument, elementwise.
-
nutils.function.
power
(__base, __exponent)¶ Return the exponentiation of the arguments, elementwise.
-
nutils.function.
sqrt
(__arg)¶ Return the square root of the argument, elementwise.
-
nutils.function.
abs
(__arg)¶ Return the absolute value of the argument, elementwise.
-
nutils.function.
sign
(__arg)¶ Return the sign of the argument, elementwise.
-
nutils.function.
mod
(__dividend, __divisor)¶ Return the remainder of the floored division, elementwise.
-
nutils.function.
cos
(__arg)¶ Return the trigonometric cosine of the argument, elementwise.
-
nutils.function.
sin
(__arg)¶ Return the trigonometric sine of the argument, elementwise.
-
nutils.function.
tan
(__arg)¶ Return the trigonometric tangent of the argument, elementwise.
-
nutils.function.
arccos
(__arg)¶ Return the trigonometric inverse cosine of the argument, elementwise.
-
nutils.function.
arcsin
(__arg)¶ Return the trigonometric inverse sine of the argument, elementwise.
-
nutils.function.
arctan
(__arg)¶ Return the trigonometric inverse tangent of the argument, elementwise.
-
nutils.function.
arctan2
(__dividend, __divisor)¶ Return the trigonometric inverse tangent of the
dividend / divisor
, elementwise.
-
nutils.function.
cosh
(__arg)¶ Return the hyperbolic cosine of the argument, elementwise.
-
nutils.function.
sinh
(__arg)¶ Return the hyperbolic sine of the argument, elementwise.
-
nutils.function.
tanh
(__arg)¶ Return the hyperbolic tangent of the argument, elementwise.
-
nutils.function.
arctanh
(__arg)¶ Return the hyperbolic inverse tangent of the argument, elementwise.
-
nutils.function.
exp
(__arg)¶ Return the exponential of the argument, elementwise.
-
nutils.function.
log
(__arg)¶ Return the natural logarithm of the argument, elementwise.
-
nutils.function.
ln
(__arg)¶ Return the natural logarithm of the argument, elementwise.
-
nutils.function.
log2
(__arg)¶ Return the base 2 logarithm of the argument, elementwise.
-
nutils.function.
log10
(__arg)¶ Return the base 10 logarithm of the argument, elementwise.
-
nutils.function.
greater
(__left, __right)¶ Return if the first argument is greater than the second, elementwise.
-
nutils.function.
equal
(__left, __right)¶ Return if the first argument equals the second, elementwise.
-
nutils.function.
less
(__left, __right)¶ Return if the first argument is less than the second, elementwise.
-
nutils.function.
min
(__a, __b)¶ Return the minimum of the arguments, elementwise.
-
nutils.function.
max
(__a, __b)¶ Return the maximum of the arguments, elementwise.
-
nutils.function.
opposite
(__arg)¶ Evaluate this function at the opposite side.
When evaluating a function
arg
at an interface, the function will be evaluated at one side of the interface.opposite()
selects the opposite side.Example
We create a one dimensional topology with two elements and a discontinuous function
f
that is 1 on the first element and 2 on the second:>>> from nutils import mesh, function >>> topo, geom = mesh.rectilinear([2]) >>> f = topo.basis('discont', 0).dot([1, 2])
Evaluating this function at the interface gives (for this particular topology) the value at the side of the first element:
>>> topo.interfaces.sample('bezier', 1).eval(f) array([ 1.])
Using
opposite()
we obtain the value at the side of second element:>>> topo.interfaces.sample('bezier', 1).eval(function.opposite(f)) array([ 2.])
It is allowed to nest opposites:
>>> topo.interfaces.sample('bezier', 1).eval(function.opposite(function.opposite(f))) array([ 1.])
-
nutils.function.
mean
(__arg)¶ Return the mean of the argument at an interface.
Example
We create a one dimensional topology with two elements and a discontinuous function
f
that is 1 on the first element and 2 on the second:>>> from nutils import mesh, function >>> topo, geom = mesh.rectilinear([2]) >>> f = topo.basis('discont', 0).dot([1, 2])
Evaluating the mean of this function at the interface gives:
>>> topo.interfaces.sample('bezier', 1).eval(function.mean(f)) array([ 1.5])
-
nutils.function.
jump
(__arg)¶ Return the jump of the argument at an interface.
The sign of the jump depends on the orientation of the interfaces in a
Topology
. Usually the jump is used as part of an inner product with thenormal()
of the geometry is used, which is independent of the orientation of the interfaces.Example
We create a one dimensional topology with two elements and a discontinuous function
f
that is 1 on the first element and 2 on the second:>>> from nutils import mesh, function >>> topo, geom = mesh.rectilinear([2]) >>> f = topo.basis('discont', 0).dot([1, 2])
Evaluating the jump of this function at the interface gives (for this particular topology):
>>> topo.interfaces.sample('bezier', 1).eval(function.jump(f)) array([ 1.])
-
nutils.function.
sum
(__arg, axis=None)¶ Return the sum of array elements over the given axes.
-
nutils.function.
product
(__arg, axis)¶ Return the product of array elements over the given axes.
-
nutils.function.
dot
(__a, __b, axes=None)¶ Return the inner product of the arguments over the given axes, elementwise over the remanining axes.
- Parameters
axis (
int
, a sequence ofint
, orNone
) – The axis or axes along which the inner product is performed. If the second argument has one dimension and axes isNone
, the default, the inner product of the second argument with the first axis of the first argument is computed. Otherwiseaxes=None
is not allowed.
- Returns
- Return type
-
nutils.function.
trace
(__arg, axis1=- 2, axis2=- 1)¶ Return the trace, the sum of the diagonal, of an array over the two given axes, elementwise over the remanining axes.
-
nutils.function.
norm2
(__arg, axis=- 1)¶ Return the 2-norm of the argument over the given axis, elementwise over the remanining axes.
-
nutils.function.
normalized
(__arg, axis=- 1)¶ Return the argument normalized over the given axis, elementwise over the remanining axes.
- Parameters
- Returns
- Return type
See also
norm2()
The 2-norm.
-
nutils.function.
matmat
(__arg0, *args)¶ helper function, contracts last axis of arg0 with first axis of arg1, etc
-
nutils.function.
inverse
(__arg, __axes=(- 2, - 1))¶ Return the inverse of the argument along the given axes, elementwise over the remaining axes.
-
nutils.function.
determinant
(__arg, __axes=(- 2, - 1))¶ Return the determinant of the argument along the given axes, elementwise over the remaining axes.
-
nutils.function.
eig
(__arg, __axes=(- 2, - 1), symmetric=False)¶ Return the eigenvalues and right eigenvectors of the argument along the given axes, elementwise over the remaining axes.
- Parameters
- Returns
-
nutils.function.
takediag
(__arg, __axis=- 2, __rmaxis=- 1)¶ Return the diagonal of the argument along the given axes.
- Parameters
- Returns
- Return type
See also
diagonalize()
The complement operation.
-
nutils.function.
diagonalize
(__arg, __axis=- 1, __newaxis=- 1)¶ Return argument with
newaxis
such thataxis
and newaxis` is diagonal.- Parameters
- Returns
- Return type
See also
takediag()
The complement operation.
-
nutils.function.
cross
(__arg1, __arg2, axis=- 1)¶ Return the cross product of the arguments over the given axis, elementwise over the remaining axes.
- Parameters
- Returns
- Return type
See also
takediag()
The inverse operation.
-
nutils.function.
outer
(arg1, arg2=None, axis=0)¶ outer product
-
nutils.function.
transpose
(__array, __axes=None)¶ Permute the axes of an array.
- Parameters
- Returns
The transposed array. Axis
i
of the resulting array corresponds to axisaxes[i]
of the argument.- Return type
-
nutils.function.
insertaxis
(__array, axis, length)¶ Insert an axis with given length.
-
nutils.function.
expand_dims
(__array, axis)¶ Insert a singleton axis.
-
nutils.function.
repeat
(__array, __n, axis)¶ Repeat the given axis of an array n times.
-
nutils.function.
swapaxes
(__array, __axis1, __axis2)¶ Swap two axes of an array.
-
nutils.function.
ravel
(__array, axis)¶ Ravel two consecutive axes of an array.
- Parameters
- Returns
- Return type
See also
unravel()
The reverse operation.
-
nutils.function.
unravel
(__array, axis, shape)¶ Unravel an axis to the given shape.
- Parameters
- Returns
The resulting array with unraveled axes
axis
andaxis+1
.- Return type
See also
ravel()
The reverse operation.
-
nutils.function.
take
(__array, __indices, axis)¶ Take elements from an array along an axis.
- Parameters
indices (
Array
with dtypeint
orbool
or something that can becast()
into one) – The indices of elements to take. The array of indices may have any dimension, including zero. However, if the array is boolean, the array must 1-D.axis (
int
) – The axis to take elements from or, ifindices
has more than one dimension, the first axis of a range ofindices.ndim
axes to take elements from.
- Returns
The array with the taken elements. The original
axis
is replaced byindices.ndim
axes.- Return type
-
nutils.function.
get
(__array, __axis, __index)¶ Get one element from an array along an axis.
- Parameters
- Returns
- Return type
See also
take()
Take elements from an array along an axis.
kronecker()
The complement operation.
-
nutils.function.
inflate
(__array, indices, length, axis)¶ Inflate elements in an axis of given length.
- Parameters
indices (
Array
with dtypeint
orbool
or something that can becast()
into one) – The indices of elements in the resulting array. The array of indices may have any dimension, including zero.axis (
int
) – The axis to inflate. The elements are inflated from axesaxis
toaxis+indices.ndim
of the input array.
- Returns
The inflated array with axes
axis
toaxis+indices.ndim
of the input array inflated to the singleaxis
.- Return type
See also
kronecker()
Special case of
inflate()
with a scalar index.take()
The complement operation.
-
nutils.function.
kronecker
(__array, axis, length, pos)¶ Position an element in an axis of given length.
- Parameters
- Returns
- Return type
-
nutils.function.
concatenate
(__arrays, axis=0)¶ Join arrays along an existing axis.
- Parameters
- Returns
- Return type
See also
stack()
Join arrays along an new axis.
-
nutils.function.
stack
(__arrays, axis=0)¶ Join arrays along a new axis.
- Parameters
- Returns
- Return type
See also
stack()
Join arrays along an new axis.
-
nutils.function.
find
(__array)¶ Return indices of true elements
-
nutils.function.
derivative
(__arg, __var)¶ Differentiate arg to var.
-
nutils.function.
localgradient
(__arg, __ndims)¶ Return the gradient of the argument to the local coordinate system.
-
nutils.function.
grad
(__arg, __geom, ndims=0)¶ Return the gradient of the argument to the given geometry.
-
nutils.function.
normal
(__geom, exterior=False)¶ Return the normal of the geometry.
-
nutils.function.
dotnorm
(__arg, __geom, axis=- 1)¶ Return the inner product of an array with the normal of the given geometry.
- Parameters
- Returns
- Return type
-
nutils.function.
tangent
(__geom, __vec)¶ Return the tangent.
-
nutils.function.
jacobian
(__geom, __ndims=None)¶ Return the absolute value of the determinant of the Jacobian matrix of the given geometry.
- Parameters
- Returns
- Return type
-
nutils.function.
J
(__geom, __ndims=None)¶ Return the absolute value of the determinant of the Jacobian matrix of the given geometry.
Alias of
jacobian()
.
-
nutils.function.
surfgrad
(__arg, *vars)¶ Return the surface gradient of the argument to the given geometry.
-
nutils.function.
curvature
(__geom, ndims=- 1)¶ Return the curvature of the given geometry.
-
nutils.function.
div
(__arg, __geom, ndims=0)¶ Return the divergence of
arg
w.r.t. the given geometry.
-
nutils.function.
laplace
(__arg, __geom, ndims=0)¶ Return the Laplacian of
arg
w.r.t. the given geometry.
-
nutils.function.
symgrad
(__arg, __geom, ndims=0)¶ Return the symmetric gradient of
arg
w.r.t. the given geometry.
-
nutils.function.
ngrad
(__arg, __geom, ndims=0)¶ Return the inner product of the gradient of
arg
with the normal of the given geometry.
-
nutils.function.
nsymgrad
(__arg, __geom, ndims=0)¶ Return the inner product of the symmetric gradient of
arg
with the normal of the given geometry.
-
nutils.function.
rootcoords
(__ndims)¶ Return the root coordinates.
-
nutils.function.
Elemwise
(__data, __index, dtype)¶ elemwise
-
nutils.function.
Sampled
(__points, expect)¶ Basis-like identity operator.
Basis-like function that for every point in a predefined set evaluates to the unit vector corresponding to its index.
-
nutils.function.
piecewise
(level, intervals, *funcs)¶
-
nutils.function.
partition
(f, *levels)¶ Create a partition of unity for a scalar function f.
When
n
levels are specified,n+1
indicator functions are formed that evaluate to one if and only if the following condition holds:indicator 0: f < levels[0] indicator 1: levels[0] < f < levels[1] ... indicator n-1: levels[n-2] < f < levels[n-1] indicator n: f > levels[n-1]
At the interval boundaries the indicators evaluate to one half, in the remainder of the domain they evaluate to zero such that the whole forms a partition of unity. The partitions can be used to create a piecewise continuous function by means of multiplication and addition.
The following example creates a topology consiting of three elements, and a function
f
that is zero in the first element, parabolic in the second, and zero again in the third element.>>> from nutils import mesh >>> domain, x = mesh.rectilinear([3]) >>> left, center, right = partition(x[0], 1, 2) >>> f = (1 - (2*x[0]-3)**2) * center
-
nutils.function.
heaviside
(f)¶ Create a heaviside step-function based on a scalar function f.
\[ \begin{align}\begin{aligned}H(f) &= 0 && f < 0\\H(f) &= 0.5 && f = 0\\H(f) &= 1 && f > 0\end{aligned}\end{align} \]See also
partition()
generalized version of
heaviside()
sign()
like
heaviside()
but with different levels
-
nutils.function.
choose
(__index, __choices)¶ Function equivalent of
numpy.choose()
.
-
nutils.function.
chain
(_funcs)¶
-
nutils.function.
vectorize
(args)¶ Combine scalar-valued bases into a vector-valued basis.
- Parameters
args (iterable of 1-dimensional
nutils.function.Array
objects) –- Returns
- Return type
-
nutils.function.
add_T
(__arg, axes=(- 2, - 1))¶ add transposed
-
class
nutils.function.
Basis
(ndofs, nelems, index, coords)¶ Bases:
nutils.function.Array
Abstract base class for bases.
A basis is a sequence of elementwise polynomial functions.
- Parameters
Notes
Subclasses must implement
get_dofs()
andget_coefficients()
and if possible should redefineget_support()
.-
get_support
(self, dof)¶ Return the support of basis function
dof
.If
dof
is anint
, return the indices of elements that form the support ofdof
. Ifdof
is an array, return the union of supports of the selected dofs as a unique array. The returned array is always unique, i.e. strict monotonic increasing.- Parameters
dof (
int
or array ofint
orbool
) – Index or indices of basis function or a mask.- Returns
support – The elements (as indices) where function
dof
has support.- Return type
sorted and unique
numpy.ndarray
-
abstract
get_dofs
(self, ielem)¶ Return an array of indices of basis functions with support on element
ielem
.If
ielem
is anint
, return the dofs on elementielem
matching the coefficients array as returned byget_coefficients()
. Ifielem
is an array, return the union of dofs on the selected elements as a unique array, i.e. a strict monotonic increasing array.
-
get_ndofs
(self, ielem)¶ Return the number of basis functions with support on element
ielem
.
-
abstract
get_coefficients
(self, ielem)¶ Return an array of coefficients for all basis functions with support on element
ielem
.- Parameters
ielem (
int
) – Element number.- Returns
coefficients – Array of coefficients with shape
(nlocaldofs,)+(degree,)*ndims
, where the first axis corresponds to the dofs returned byget_dofs()
.- Return type
-
get_coeffshape
(self, ielem)¶ Return the shape of the array of coefficients for basis functions with support on element
ielem
.
-
class
nutils.function.
PlainBasis
(coefficients, dofs, ndofs, index, coords)¶ Bases:
nutils.function.Basis
A general purpose implementation of a
Basis
.Use this class only if there exists no specific implementation of
Basis
for the basis at hand.- Parameters
coefficients (
tuple
ofnumpy.ndarray
objects) – The coefficients of the basis functions per transform. The order should match thetransforms
argument.dofs (
tuple
ofnumpy.ndarray
objects) – The dofs corresponding to thecoefficients
argument.ndofs (
int
) – The number of basis functions.index (
Array
) – The element index.coords (
Array
) – The element local coordinates.
-
class
nutils.function.
DiscontBasis
(coefficients, index, coords)¶ Bases:
nutils.function.Basis
A discontinuous basis with monotonic increasing dofs.
- Parameters
coefficients (
tuple
ofnumpy.ndarray
objects) – The coefficients of the basis functions per transform. The order should match thetransforms
argument.index (
Array
) – The element index.coords (
Array
) – The element local coordinates.
-
class
nutils.function.
MaskedBasis
(parent, indices)¶ Bases:
nutils.function.Basis
An order preserving subset of another
Basis
.
-
class
nutils.function.
StructuredBasis
(coeffs, start_dofs, stop_dofs, dofs_shape, transforms_shape, index, coords)¶ Bases:
nutils.function.Basis
A basis for class:nutils.transformseq.StructuredTransforms.
- Parameters
coeffs (
tuple
oftuple
s of arrays) – Per dimension the coefficients of the basis functions per transform.start_dofs (
tuple
of arrays ofint
s) – Per dimension the dof of the first entry incoeffs
per transform.stop_dofs (
tuple
of arrays ofint
s) – Per dimension one plus the dof of the last entry incoeffs
per transform.transforms_shape (
tuple
ofint
s) – The tensor shape of the transforms.index (
Array
) – The element index.coords (
Array
) – The element local coordinates.
-
class
nutils.function.
PrunedBasis
(parent, transmap, index, coords)¶ Bases:
nutils.function.Basis
A subset of another
Basis
.
-
class
nutils.function.
Namespace
(*, default_geometry_name='x', fallback_length=None, functions=None, **kwargs)¶ Bases:
object
Namespace for
Array
objects supporting assignments with tensor expressions.The
Namespace
object is used to storeArray
objects.>>> from nutils import function >>> ns = function.Namespace() >>> ns.A = function.zeros([3, 3]) >>> ns.x = function.zeros([3]) >>> ns.c = 2
In addition to the assignment of
Array
objects, it is also possible to specify an array using a tensor expression string — seenutils.expression.parse()
for the syntax. All attributes defined in this namespace are available as variables in the expression. If the array defined by the expression has one or more dimensions the indices of the axes should be appended to the attribute name. Examples:>>> ns.cAx_i = 'c A_ij x_j' >>> ns.xAx = 'x_i A_ij x_j'
It is also possible to simply evaluate an expression without storing its value in the namespace by passing the expression to the method
eval_
suffixed with appropriate indices:>>> ns.eval_('2 c') Array<> >>> ns.eval_i('c A_ij x_j') Array<3> >>> ns.eval_ij('A_ij + A_ji') Array<3,3>
For zero and one dimensional expressions the following shorthand can be used:
>>> '2 c' @ ns Array<> >>> 'A_ij x_j' @ ns Array<3>
Sometimes the dimension of an expression cannot be determined, e.g. when evaluating the identity array:
>>> ns.eval_ij('δ_ij') Traceback (most recent call last): ... nutils.expression.ExpressionSyntaxError: Length of axis cannot be determined from the expression. δ_ij ^
There are two ways to inform the namespace of the correct lengths. The first is to assign fixed lengths to certain indices via keyword argument
length_<indices>
:>>> ns_fixed = function.Namespace(length_ij=2) >>> ns_fixed.eval_ij('δ_ij') Array<2,2>
Note that evaluating an expression with an incompatible length raises an exception:
>>> ns = function.Namespace(length_i=2) >>> ns.a = numpy.array([1,2,3]) >>> 'a_i' @ ns Traceback (most recent call last): ... nutils.expression.ExpressionSyntaxError: Length of index i is fixed at 2 but the expression has length 3. a_i ^
The second is to define a fallback length via the
fallback_length
argument:>>> ns_fallback = function.Namespace(fallback_length=2) >>> ns_fallback.eval_ij('δ_ij') Array<2,2>
When evaluating an expression through this namespace the following functions are available:
opposite
,sin
,cos
,tan
,sinh
,cosh
,tanh
,arcsin
,arccos
,arctan2
,arctanh
,exp
,abs
,ln
,log
,log2
,log10
,sqrt
andsign
.Additional pointwise functions can be passed to argument
functions
. All functions should takeArray
objects as arguments and must return anArray
with as shape the sum of all shapes of the arguments.>>> def sqr(a): ... return a**2 >>> def mul(a, b): ... return a[(...,)+(None,)*b.ndim] * b[(None,)*a.ndim] >>> ns_funcs = function.Namespace(functions=dict(sqr=sqr, mul=mul)) >>> ns_funcs.a = numpy.array([1,2,3]) >>> ns_funcs.b = numpy.array([4,5]) >>> 'sqr(a_i)' @ ns_funcs # same as 'a_i^2' Array<3> >>> ns_funcs.eval_ij('mul(a_i, b_j)') # same as 'a_i b_j' Array<3,2> >>> 'mul(a_i, a_i)' @ ns_funcs # same as 'a_i a_i' Array<>
- Parameters
default_geometry_name (
str
) – The name of the default geometry. This argument is passed tonutils.expression.parse()
. Default:'x'
.fallback_length (
int
, optional) – The fallback length of an axis if the length cannot be determined from the expression.length_<indices> (
int
) – The fixed length of<indices>
. All axes in the expression marked with one of the<indices>
are asserted to have the specified length.functions (
dict
, optional) – Pointwise functions that should be available in the namespace, supplementing the default functions listed above. All functions should return arrays with as shape the sum of all shapes of the arguments.
-
__getstate__
(self)¶ Pickle instructions
-
__setstate__
(self, d)¶ Unpickle instructions
-
property
default_geometry
¶ The default geometry, shorthand for
getattr(ns, ns.default_geometry_name)
.
-
__call__
(*args, **subs)¶ Return a copy with arguments replaced by
subs
.Return a copy of this namespace with
Argument
objects replaced according tosubs
.
-
copy_
(self, *, default_geometry_name=None)¶ Return a copy of this namespace.
-
__getattr__
(self, name)¶ Get attribute
name
.
-
__setattr__
(self, name, value)¶ Set attribute
name
tovalue
.
-
__delattr__
(self, name)¶ Delete attribute
name
.
-
__rmatmul__
(expr: str) → nutils.function.Array¶ -
__rmatmul__
(expr: Union[Tuple[str, …], List[str]]) → Tuple[nutils.function.Array, …] Evaluate zero or one dimensional
expr
or a list of expressions.